【问题标题】:Flutter Web - How to reload currently Active PageFlutter Web - 如何重新加载当前的活动页面
【发布时间】:2020-04-22 13:55:28
【问题描述】:

我正在使用 Flutter 开发网站。除了重新加载页面外,Flutter 一切正常。当我按下浏览器中的刷新按钮时,整个网络应用程序都会重新加载。

例如,如果我从初始页面导航到四个页面,当我从第四个页面按下刷新按钮时,初始页面会被加载,我必须再次手动浏览到第四个页面.

有没有办法在 Flutter 中加载当前活动页面?

【问题讨论】:

    标签: web flutter dart flutter-web


    【解决方案1】:

    或者你可以使用它,因为它会原生刷新整个窗口

    import 'dart:html' as html;
    html.window.location.reload();
    

    【讨论】:

    【解决方案2】:

    使用 named routes 查看导航,因为它在使用 Flutter Web 时无缝映射 URL。

    编辑:如果您需要 URL 参数(如 id、令牌...),请查看 this article

    【讨论】:

    • 我正在使用命名路由,但浏览器刷新仍然不会重新加载当前活动页面
    • 当我们没有从上一页传递数据或者不需要记住我们在哪个标签上时,命名路由可以正常工作,否则,它不起作用。
    • 在我的情况下,应用程序会完全重新加载,即使使用命名路由也是如此。到目前为止有什么解决方案吗?
    • 我编辑了我的答案以包含一篇关于如何使用 URL 参数的文章。
    【解决方案3】:

    使用导航器推送到同一页面。 。IE。 如果 CurrentPage() 是您需要刷新的页面,则使用:

    Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => CurrentPage()));

    这将重新加载页面。

    【讨论】:

      【解决方案4】:

      将 'dart:html' 导入为 html;

      html.window.location.reload();

      因为这是不允许的

      https://dart-lang.github.io/linter/lints/avoid_web_libraries_in_flutter.html

      这就是我解决问题的方法:

      导入这个包

      https://pub.dev/packages/universal_html/install

      导入任何你想使用的地方

      将 'package:universal_html/html.dart' 导入为 html;

      你可以这样使用它

      html.window.location.reload();

      【讨论】:

        猜你喜欢
        • 2019-02-22
        • 2018-04-22
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 2023-01-25
        • 2011-12-31
        • 1970-01-01
        相关资源
        最近更新 更多