我想在提供程序通知状态更改时显示一个对话框.但是,我得到如下所示的错误.根据Provider 的通知实现此类行为的最佳方式是什么?

@override
  Widget build(BuildContext context) {
    return Consumer<GameModel>(
      builder: (context, gameModel, child) {
        if (gameModel.gameOver) {
         _onGameOverDialog(gameModel);
        }
       
        return WillPopScope(
....

当我执行此操作时,会出现此错误

不能将此覆盖小部件标记为需要生成,因为 框架已经在构建小部件的过程中.

推荐答案

当应用程序仍在构建小工具的过程中时,您无法显示对话框,请try 添加此"WidgetsBinding",以等待小工具完全构建并显示对话框.

    if(gameModel.gameOver) {
        WidgetsBinding.instance.addPostFrameCallback((_) {
          _onGameOverDialog(context, gameModel);
        });
      }

Flutter相关问答推荐

如何更改默认应用程序启动器/启动屏幕

SingleChildScrollView正在将Container的高度限制为子对象,尽管使用了Expanded Inside Row()

为什么Flutter InAppWebView中的DatePicker看起来很旧?

如何将 colored颜色 阴影作为默认容器 colored颜色 应用于自定义窗口小工具?

CMakeLists.txt处的CMake错误:3(项目)找不到指定的Visual Studio实例

我想在Flutter中画一个箭头,但我似乎无法填满空间

带有图标抖动的自定义下拉按钮

如何从RealmResults获取Flutter Flutter 流?

轻松本地化包翻译在底部导航栏项目标签Flutter 翼dart 中不起作用

如何在flutter中将所有单词的第一个字母大写

Flutter:在 pubspec.yaml 中找不到assets资源

有没有办法在没有收缩包装的情况下在列中使用 ListView.Builder?

Agora VideoCall 不显示远程视频网格

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

如何从 Firebase `get()` 获取 `DocumentReference`

如何获得Flutter 的时差?

扫描flutter生成的二维码后如何弹出文本字段值

在 Flutter 中单击时切换按钮 colored颜色 没有改变

既然我们已经有了 Flutter 的内置 setState,为什么还要在 Flutter 中使用 BloC 或 Provider?

如何在Flutter 中将列表的模型类型转换为数组?