Flutter-如何关闭中间的showDialog小部件

问题描述 投票:1回答:1

我有两个同时运行的进程在同一上下文中彼此独立运行。我们将其命名为A和B。两者都会弹出一个忙碌指示器。

showDialog(... child: Center(child: CircularProgressIndicator()) ...);

完成后,B将弹出一个AlertDialog。有时,如果A花费的时间更长,则在A忙碌指示器消失之前会弹出警报对话框。因此,当A完成时,它将关闭警报对话框而不是忙碌指示器。

Navigator.of(context).pop(data);

如何选择要关闭的showDialog小部件?

flutter showdialog
1个回答
0
投票

可能类似这样的方法可能起作用:

     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);
                      },
                    ),
                  ],
                );
            });
        }

您为每个对话框提供一个导航键,并使用该键关闭所需的对话框。

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.