【问题标题】:Flutter Web: Detect browser/tab close or refresh?Flutter Web:检测浏览器/选项卡关闭或刷新?
【发布时间】:2020-09-25 22:54:04
【问题描述】:

使用 Flutter Android 和 iOS 模块,您可以使用 AppLifeCycleState 来检测应用何时进入后台。

对于 Flutter Web 是否有类似的东西,我可以检测到浏览器/选项卡的关闭或刷新?

如果用户关闭浏览器或刷新,我基本上想运行 Firestore 命令。

【问题讨论】:

    标签: flutter dart flutter-web


    【解决方案1】:

    您可以使用“onBeforeUnload”函数来检查选项卡是否正在关闭。它也可能检测到页面刷新。

    import 'dart:html' as html;
    html.window.onBeforeUnload.listen((event) async{
      // do something
    });
    

    import 'dart:html' as html;
    html.window.onUnload.listen((event) async{
      // do something
    });
    

    【讨论】:

    • 这会干扰我的 Android/iOS 模块吗?我过去读过 dart:html 导入会导致移动设备崩溃。
    • @RossPatterson 你可以使用pub.dev/packages/universal_html 在android/iOS 中工作
    【解决方案2】:

    只需使用 OnBeforeUnload 或 OnUnload。 对我来说它在没有异步的情况下工作,我认为这是因为窗口不等待关闭它只是关闭。 如果您想在用户退出选项卡或刷新时更改数据库中的某些内容,则应在后台线程上调用一个方法,以便即使在窗口关闭/选项卡关闭/刷新后它也会继续运行并完成任务。

    html.window.onBeforeUnload.listen((event) {
       // change something in db
    });
    

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2017-12-17
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多