Flutter web - Window.history.pushState 不起作用

Posted

技术标签:

【中文标题】Flutter web - Window.history.pushState 不起作用【英文标题】:Flutter web - Window.history.pushState does not work 【发布时间】:2021-02-13 14:01:23 【问题描述】:

我正在尝试让 Flutter Web 应用程序将查询参数附加到 url 的末尾(当在 UI 中进行选择时)而不重新加载页面

基本上我想在不重新加载页面的情况下将 URL 从 http://127.0.0.1:8080/#/sites 更新为 http://127.0.0.1:8080/#/sites?arg=1

以下行(import 'dart:html')在flutter中不起作用(URL根本没有改变)

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

我也试过 js 包 (https://pub.dev/packages/js) 也不行。

有没有办法让它在flutter web中工作,或者有没有其他方法可以满足我的要求?

【问题讨论】:

【参考方案1】:

经过一番挣扎,并尝试将调用包装在 Future.delayed 中似乎可以解决该问题。

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

如果你有更好的答案,我很想知道。谢谢

【讨论】:

是的。在我看来,这就是现在正常工作的方法。 Duration.zero 也可以。

以上是关于Flutter web - Window.history.pushState 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

flutter项目中添加web支持

如何将 Flutter 移动应用迁移到 Flutter Web

flutter Web端支持内嵌加载网页

Flutter web 最新进展: 发掘更多可能!

Flutter 调味移动应用和 Flutter web

flutter web开发环境配置