flutter - 如何使用 Navigator.of(context).pop() 在一秒后隐藏 alertDialog

标签 flutter dart

我试图在一秒钟后自动隐藏一个 alertDialog

这是代码:

Widget popupWidget(BuildContext context, ...) {
  Future.delayed(Duration(seconds: 1), () {
    Navigator.of(context).pop();
  });
  return AlertDialog(...);}

什么有效:

  • 我可以点击屏幕上的其他地方来关闭 alertDialog

  • 我可以等一秒钟,它会自动关闭

错误:

如果,在(确切地?)一秒钟之后,我点击屏幕上的其他地方(关闭 alertDialog),Future.delayed(...) 将不会隐藏 alertDialog,而是隐藏整个屏幕

我没有成功尝试使 showDialog 异步,也尝试了行

Navigator.of(context, rootNavigator: true).pop();

最佳答案

我想我已经找到了解决方法:

bool popupIsActive = true;

Future.delayed(Duration(seconds: 1), () {
if (popupIsActive) Navigator.of(context).pop();
});

showDialog(...).then((_) {
popupIsActive = false;
});

关于flutter - 如何使用 Navigator.of(context).pop() 在一秒后隐藏 alertDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395314/

相关文章:

flutter - AnimatedSwitcher 没有动画

flutter - 如何在 flutter 中创建一个始终停留在页面底部的按钮?

dart - Dart lang中的DOM更改监听器

dart - 使用Aqueduct 3.0处理分段上传

flutter - 如何使用Flutter和Hive DB更新数据?

ios - 将 watch 应用程序添加到 Flutter iOS 应用程序

android - 发现任务 ':app:processDebugResources' 配置有问题

api - 使用zoom oauth2和flutter_web_auth的无效重定向错误

animation - 如何检查AnimatedContainer是否完全动画?

dart - Dart核心元素core-collapse