Удалить символ “#” из 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());

Ответить