buildProductList() {
return StreamBuilder(
initialData: productBloc.getAll(),
stream: productBloc.getStream,
builder: (context, snapshot){
return snapshot.data.length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);},
);
}我试过"?“还有“!”没有起作用吗,snapshot.data?.length>0?
快照.!data.length>0?在这里输入图像描述没有工作
这里错误的mes。
getter 'length‘不是为类型'Object’定义的。(文档)尝试导入定义'length‘的库,将名称更正为现有getter的名称,或者定义名为'length’的getter或字段。
发布于 2022-03-26 09:36:17
首先检查数据是否是列表或不像下面这样
List myFun(snapshot) {
return (snapshot.data is List)? snapshot.data as List : []
}现在你可以这样用它了
myFun(snapshot).isNotEmpty? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);发布于 2022-03-25 17:40:37
发布于 2022-03-26 20:01:54
好吧,所以我不认为你的问题是空安全或者!,
您的错误与不能在动态对象上调用.length这一事实有关。
因此,要解决这个问题(显然是在您将!放在data之后),您应该为快照参数提供一个类型。
因此,例如,如果您的数据是一个列表,您应该这样做:
builder: (context, AsyncSnapshot<List> snapshot){
return snapshot.data!.length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);},
);我希望这能解决你的问题。
https://stackoverflow.com/questions/71620938
复制相似问题