首页 > 解决方案 > 我们需要如何使用快照和未来构建器?

问题描述

在我使用futurebuilder和快照的那一刻,我确实喜欢这样:所以将来我用数据设置函数。在我用等待测试 snapshot.connectionState 之后。您如何看待这种工作方式,我不确定它是否正确

FutureBuilder(
              future: ListLotto,
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                switch (snapshot.connectionState) {
                  case ConnectionState.waiting:
                    return new Center(
                      child: new CircularProgressIndicator(),);
                  default:
                    if (snapshot.hasError) {
                      return new Center(
                        child: new Text('Error: ${snapshot.error}'),);
                    }
                    else {
                        List<Lotto_grid> values = snapshot.data;
                        if (values.isEmpty) {
                        return Container(

标签: flutter

解决方案


   FutureBuilder(
          future: myFuture,
          initialData: initialValue,//specify it if necessary
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            switch(snapshot.connectionState){
              case ConnectionState.done:
                if(snapshot.hasError) {
                  return myErrorWidget();
                } else if(snapshot.hasData) {
                  return MyDataWidget();
                } else{//if snapshot.data == null
                  return MyOtherWidget();
                }
              default:
                return CircularProgressIndicator();
            }
          }
      )

这个更好,因为它检查数据是否为空,所以你不会NullPointerException在这一行:

列表值 = 快照.data;


推荐阅读