我有两个同时运行的进程在同一上下文中彼此独立运行。我们将其命名为A和B。两者都会弹出一个忙碌指示器。
showDialog(... child: Center(child: CircularProgressIndicator()) ...);
完成后,B将弹出一个AlertDialog
。有时,如果A花费的时间更长,则在A忙碌指示器消失之前会弹出警报对话框。因此,当A完成时,它将关闭警报对话框而不是忙碌指示器。
Navigator.of(context).pop(data);
如何选择要关闭的showDialog
小部件?
可能类似这样的方法可能起作用:
final GlobalKey navigator1 = GlobalKey<NavigatorState>();
final GlobalKey navigator2 = GlobalKey<NavigatorState>();
...
_showDialog(context, 'alert1', navigator1);
_showDialog(context, 'alert2', navigator2);
...
_showDialog(BuildContext context, String text, GlobalKey key) {
return showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
key: key,
title: new Text(text),
actions: <Widget>[
new FlatButton(
child: new Text("Close"),
onPressed: () {
Navigator.pop(key.currentContext);
},
),
],
);
});
}
您为每个对话框提供一个导航键,并使用该键关闭所需的对话框。
希望有帮助