Flutter Web:如何检测浏览器/标签页的关闭或刷新?

15

使用Flutter Android和iOS模块,您可以使用AppLifeCycleState检测应用程序何时被置于后台。

在Flutter Web中是否有类似的功能,可以检测浏览器/选项卡关闭或刷新?

如果用户关闭浏览器或刷新页面,我想运行一个Firestore命令。

2个回答

20

您可以使用函数"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
});

3
这会影响我的Android/iOS模块吗?我曾经读到过,dart:html导入会导致移动设备崩溃。 - Ross Patterson
@RossPatterson 你可以使用 https://pub.dev/packages/universal_html 在 Android/iOS 上工作。 - Rinkesh
@Rinkesh,你说的这个包在Flutter web上不支持。 - Aqeel Mughal
我们如何为用户显示一个确认对话框,以便询问“您真的想关闭该标签页吗?” - Muhammad Ullah

3

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

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

如何在后台线程上运行某个任务? - arisalexis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接