flutter - 导航后打开 flutter 对话框

我调用 Navigator pushReplacement 在我的 Flutter 应用程序中显示一个新 View ,并希望立即弹出一个简单的对话框来向用户介绍该页面。 (我希望用户能够在后台看到新 View )

如果我在小部件的 build 方法中调用 showDialog,然后从 build 方法返回一个小部件(脚手架),我会收到错误消息,指出 flutter 已经在绘制小部件。我希望我需要监听构建完成事件,然后调用 showDialog。

非常感谢有关如何做到这一点的指导。

最佳答案

您可以从“initState()”内部调用该对话框,在绘制第一帧后延迟其外观。

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      await showDialog<String>(
        context: context,
        builder: (BuildContext context) => new AlertDialog(
              title: new Text("title"),
              content: new Text("Message"),
              actions: <Widget>[
                new FlatButton(
                  child: new Text("OK"),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            ),
      );
    });
  }

context 变量在 State 类中始终可用。它指向这个小部件的 RenderObject。问题是在 initState() 中,上下文尚未创建,因此您必须在第一帧布局后推迟其使用。然后就可以使用了。

https://stackoverflow.com/questions/50806031/

相关文章:

flutter - 有没有办法在 Flutter 中扫描条形码?

flutter - Flutter 的垂直文本小部件

image - 如何使用 Flutter 将 BASE64 字符串转换为 Image?

ios - Flutter - SWIFT_VERSION 必须设置为支持的值

android - [Flutter]中如何打开PDF或word文档

flutter - 无效参数 : Illegal argument in isolate messa

android - Flutter - setState 不更新内部有状态小部件

flutter - 小部件间通信

android-studio - 如何找到 Flutter SDK 的路径

dart - Flutter:在 StatelessWidget 中哪里添加监听器?