【发布时间】:2020-10-24 12:10:57
【问题描述】:
这是错误:
有问题的小部件是:FutureBuilder 构建函数绝不能返回 null。 要返回导致建筑小部件填满可用空间的空白空间,请返回“Container()”。要返回占用尽可能少空间的空白空间,请返回“Container(width: 0.0, height: 0.0)”。
这是获取 Firebase 实时数据的函数:
Future<void> getCategoriesName() async {
await FirebaseDatabase.instance.reference().child('Categories').once()
.then((DataSnapshot dataSnapshot){
var key = dataSnapshot.value.keys;
for(var i in key)
{
CategoryItems categoryItems = new CategoryItems(
dataSnapshot.value[i]['CategoryName'],
dataSnapshot.value[i]['Counter']
);
categoryItemList.add(categoryItems);
}
setState(() {
print(categoryItemList.length);
});
});
}
这是我的 Future Builder 函数:
Container(
margin: EdgeInsets.only(bottom: 50,top: 100),
child: FutureBuilder(
future: FirebaseDatabase.instance.reference().child('Categories').child(_userPin).once(),
// ignore: missing_return
builder: (context, snapshot) {
if(snapshot.hasData){
if (snapshot.data!=null) {
return Expanded();
}else{
return Loader();
}
}
}
),
),
在 Expanded 内部,我有 ListView.builder,仅当我的数据被加载时,上面的错误才会抛出几秒钟,它会在屏幕上显示项目。我在 FutureBuiler 的容器顶部有 Stack 小部件。
【问题讨论】: