Удалить символ “#” из URL в Flutter: HashUrlStrategy и PathUrlStrategy
В последнее время многие начали задаваться вопросов, что же делать если есть в URL-ссылке приложения Flutter стал появляться символ “#”. В этой статье Я вам расскажу, как избавиться от этой проблемы.
Пример: http: // localhost: 56235 / # / логин
Хочу вас обрадовать, есть способ убрать этот знак из вашего URL. Приступим к исправлению.
Веб-приложения Flutter в основном поддерживают два разных способа настройки навигации в Интернете на основе URL-адресов: Хеш (по умолчанию). В этом примере хеш-фрагмент читается и записывается с путем:
Например; http: // localhost: 56235 / # / логин
Они устанавливаются с помощью API setUrlStratgy, PathUrlStrategy или HashUrlStrategy. SetUrlStrategy можно вызвать только в Интернете. В приведенных ниже инструкциях показано, как вызвать эту функцию через условный импорт в браузере, но не на других платформах.
1. Перед запуском вашей программы включите пакет flutter_web_plugins и вызовите функцию setUrlStrategy:
dependencies:
flutter_web_plugins:
sdk: flutter
2. Создайте файл lib / configue_nonweb.dart с кодом, приведенным ниже:
void configureApp() {
// No-op.
}
3. Создайте файл lib / configure_web.dart, используя следующий код:
void configureApp() {
setUrlStrategy(PathUrlStrategy());
}
4. Откройте lib / main.dart и условно импортируйте configue_web.dart, если пакет html, или configure_nonweb.dart если его нет:
void main() {
configureApp();
runApp(MyApp());
}
Фрагменты «#» обычно используются в веб-приложениях для указания на вторичный ресурс. Им могут являться определенные абзацы, разделы или заголовоки в веб-приложении. HashUrlStrategy или PathUrlStrategy по умолчанию используется для веб-приложений Flutter.
Вы можете использовать методы из класса HashUrlStrategy, чтобы возвращать активный путь, текущее состояние и перемещать, заменять между записями истории. Однако, если вам все же нужно удалить символ «#» из URL-адреса, это можно сделать с помощью класса PathUrlStartegy. Обновите свой main.dart, как указано, чтобы удалить #. Вы также можете сделать это, просто сделав следующее:
void main() {
setUrlStrategy(PathUrlStrategy());
runApp(MyApp());