有没有办法在关闭运行 flutter 应用程序的浏览器选项卡时显示警告对话框?

moa*_*bly 7 popup flutter flutter-web

我想向用户表明,当他们尝试关闭我的 flutter web 应用程序中的选项卡时,正在下载一个文件。有没有办法连接到应用程序来检测这种行为并显示这样的警告消息?

警告弹出窗口

小智 6

您可以为BeforeUnloadEvent注册代码,如下所示:

import 'dart:html' as html;

/// Subscription on application termination warning
StreamSubscription? _onBeforeUnloadSubscription;

//enable warning for closing browser tab:
_onBeforeUnloadSubscription = registerOnBeforeUnload("Transfers in progress!");

//disable warning for closing browser tab:
stopBeforeUnloadHandler();


StreamSubscription? registerOnBeforeUnload(String warningMessage) {
  StreamSubscription<html.BeforeUnloadEvent> _onBeforeUnloadSubscription;

  _onBeforeUnloadSubscription = html.window.onBeforeUnload.listen((e) async {
    (e as html.BeforeUnloadEvent).returnValue = warningMessage;
    return Future.value(warningMessage);
  }) as StreamSubscription<html.BeforeUnloadEvent>;
  return _onBeforeUnloadSubscription;
}

void stopBeforeUnloadHandler() {
  if (_onBeforeUnloadSubscription != null) {
    _onBeforeUnloadSubscription!.cancel();
    _onBeforeUnloadSubscription = null;
  }
}
Run Code Online (Sandbox Code Playgroud)