如何在FutureBuilder中显示对话框

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

在Flutter中,我使用FutureBuilder来显示API中的数据。出现错误时,我想弹出一个错误对话框。

但是,当我调用showDialog()时,它将引发错误>

setState() or markNeedsBuild() called during build.

这是我的代码

    return FutureBuilder(
      future: xxx,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          //DO SOMETHING

        } else if (snapshot.hasError) {
          //TODO: Show Error

          showDialog(
              context: context,
              builder: (BuildContext context) {
                return AlertDialog(
                  title: Text("Error"),
                  content: Text("HAHAHA"),
                  actions: <Widget>[
                    FlatButton(
                      child: Text("No"),
                    ),
                    FlatButton(
                        child: Text("Yes")
                    ),
                  ],
                );
              }
          );

          return Container();

        } else {
          //DO SOMETHING
        }
      },

[请帮助告知我如何在FutureBuilder中显示对话框。

在Flutter中,我使用FutureBuilder来显示API中的数据。有错误时,我想弹出一个错误对话框。但是,当我调用showDialog()setState()或markNeedsBuild()...

flutter showdialog
1个回答
1
投票

当构建方法正在构建窗口小部件时,我们无法调用setState,navigate或showDialog。因此,我们可以等待一微秒,同时构建方法完成构建小部件,以便显示对话框。

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