我打电话给Navigator pushReplacement,在我的Flatter应用程序中显示一个新视图,并想立即弹出一个简单的对话框,向用户介绍页面.(我希望用户能够在后台看到新视图)

如果我在小部件的build方法中调用showDialog,然后从build方法返回一个小部件(Scaffold),我会收到错误,指出fltter已经在绘制一个小部件.我希望我需要侦听构建完成事件,然后调用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();
                  },
                ),
              ],
            ),
      );
    });
  }

State类中,context变量始终可用.它指向此小部件的RenderObject.问题是在initState()中还没有创建上下文,所以您必须在布局第一帧之后推迟使用它.那么它就可以使用了.

Flutter相关问答推荐

所需引用Firebase处不存在任何对象

在Android Studio的新用户界面中未找到热重新加载

Ffltter:发布版本中的Path NotFoundException

在框中保存对象列表时,类型推断无法正常工作

缩短经常使用的行Theme.of(context).colorScheme

如何在Flutter 中共享选定文本

FittedBox叠加技术在Flutter 中的应用

在Ffltter中,我已经使用了Ffltter_BLOC Cupit和Pusher,但当获得新数据时,UI没有更新

Flutter记录返回类型问题

reactive_flutter_BLE - 应用找到设备但无法连接(并读取 BLE 数据)

如何将此文本按钮剪辑在堆栈中的圆形头像上方?

我可以定义一次 sharedPreferences 并在需要数据显示到 flutter 应用程序时调用它吗?

如何在 flutter 中制作这种类型的扩展瓦片

Banner Ad.test 广告单元 ID 是否已过时?

如何按键在 map 列表中搜索

更新未知文档 ID firebase\flutter 中的字段

如何在flutter中共享容器和gridview之间的滚动条?

阴影效果只出现在一张卡片的左边 在Flutter 中?

Flutter Bloc Todo 示例 - 收听存储库中的单个 todo

如何从圆角go 除背景 colored颜色