Flutter web — Window.history.pushState не работает

#dart #flutter-web

#dart #flutter-web

Вопрос:

Я пытаюсь заставить веб-приложение flutter добавлять параметр запроса в конец URL-адреса (при выборе в пользовательском интерфейсе) без перезагрузки страницы

В принципе, я хотел бы обновить URL-адрес с http://127.0.0.1:8080/#/sites чтобы http://127.0.0.1:8080/#/sites?arg=1 без перезагрузки страницы

Следующая строка (импорт ‘dart:html’) не работает в flutter (URL-адрес вообще не меняется)

  window.history.pushState(null, null, '?arg1=1');
  

Я также попробовал пакет js (https://pub.dev/packages/js ) и это тоже не работает.

Есть ли способ заставить это работать в flutter web или есть какие-либо альтернативы для выполнения моего требования?

Ответ №1:

С небольшой борьбой и попытался перенести вызов в будущее.задержка, похоже, устраняет эту проблему.

 Future.delayed(
Duration(milliseconds: 100), () => window.history.replaceState(null, null, '${Uri.base.toString()}?accountId=${selectedAccount.accountId}'));
  

Если у вас есть лучший ответ, я хотел бы знать. Спасибо

Комментарии:

1. Да. Мне кажется, это то, что работает правильно прямо сейчас. Duration.zero тоже выполняет эту работу.