FutureBuilder中的build方法,死循环

FutureBuilder in the build method, infinite loop

我正在尝试使用 futurebuilder 从数据库中获取数据,然后在加载数据后将其显示在屏幕上。我目前在构建方法中有我的 futurebuilder,但它创建了一个无限循环。

这是我构建的内容:

try {
      initUser();
      initRead();
      return Scaffold(
        body: new SingleChildScrollView(
          child: Container(
            padding: EdgeInsets.all(16.0),
            child:  FutureBuilder(
              future: _read(),
            builder: (BuildContext context, snapshot) {
              List<Widget> children;

              if (snapshot.hasData && !snapshot.hasError) {
                children = <Widget>[showImage()];
              } else {
                children = <Widget>[
                  _showCircularProgress(),
                ];
              }
              return Center(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: children,
                ),
              );
            }),
          ),
        ),
      );
    } catch (e) {
      print(e.toString());
      return Container();
    }

如何使用此 FutureBuilder 来检查 _read() 何时完成而不会出现此无限循环?谢谢!

您 return 您的专栏所在的行不在您的 if (snapshot.hasData && !snapshot.hasError) 行内,请尝试将其包括在内

所以,

if (snapshot.hasData && !snapshot.hasError) {
   return Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: showImage(),
            ),
          );
        }),
} else {
   return Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children:  _showCircularProgress(),,
            ),
          );
        }),
}