我试图在一秒钟后自动隐藏一个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();
答案 0 :(得分:2)
我想我找到了一种解决方法:
bool popupIsActive = true;
Future.delayed(Duration(seconds: 1), () {
if (popupIsActive) Navigator.of(context).pop();
});
和
showDialog(...).then((val) {
popupIsActive = false;
});
答案 1 :(得分:1)
您可能希望忽略对话框外的任何轻按,以防止其消失,只是等待将来完成。您可以在barrierDismissible
中将showDialog()
设置为false。