flutter - 我们需要如何使用快照和未来构建器?
问题描述
在我使用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(
解决方案
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;
推荐阅读
- python - 如何从 python 中的 firebase 中的键访问值
- c++ - 否则 if 语句无法正常运行
- bash - 如何使用 sed 从字符串中提取负数
- c++ - 引用类型擦除的 void*
- swift - 字典不添加从 Firestore 检索到的值
- arrays - 在两个单独的反应子组件中使用完全相同的数据。一个组件允许操作数据,另一个组件不允许
- excel - 动态工作簿名称更改和单元格引用 - 可能吗?
- swift - 当视图被 tableview 回收时,如何保持 Lottie 动画运行?
- c++ - 如何使用 ftp 测试模块带宽
- javascript - 拆分字符串,得到后半部分