flutter - 如何在 Flutter 中离开屏幕前显示确认对话框

标签 flutter flutter-dialog

我想在处理或离开屏幕之前或最近显示警告 SnackBar 之前显示警报对话框,我该怎么做?

我知道如何显示对话框和 SnackBar,但我不知道我在哪里执行此操作,或者我何时尝试在处理生命钩子(Hook)时执行此操作,但它会出错。由于上下文在显示对话框之前被处理。

最佳答案

您可以使用 WillPopScope小部件:

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        final value = await showDialog<bool>(
          context: context,
          builder: (context) {
            return AlertDialog(
              content: Text('Are you sure you want to exit?'),
              actions: <Widget>[
                FlatButton(
                  child: Text('No'),
                  onPressed: () {
                    Navigator.of(context).pop(false);
                  },
                ),
                FlatButton(
                  child: Text('Yes, exit'),
                  onPressed: () {
                    Navigator.of(context).pop(true);
                  },
                ),
              ],
            );
          }
        );

        return value == true;
      },
      child: Scaffold(
        appBar: AppBar(),
        body: SafeArea(
          child: Container()
        ),
      ),
    );
  }

关于flutter - 如何在 Flutter 中离开屏幕前显示确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59123262/

相关文章:

Flutter 我在 firebase listing 时收到的错误

flutter - 如何使用ble manager关闭蓝牙?

flutter - 如何从 IDE 在移动版 chrome 上运行 Flutter Web

flutter - 导航器中的未定义名称 'context'

android - 获取用户SIM卡列表并选中-flutter

flutter - 即使我的文本字段不为空,错误消息也不会出现

flutter - 从另一个对话框中显示对话框