首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamBuilder snapshot.data.length

StreamBuilder snapshot.data.length
EN

Stack Overflow用户
提问于 2022-03-25 17:28:20
回答 3查看 278关注 0票数 0
代码语言:javascript
复制
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或字段。

EN

回答 3

Stack Overflow用户

发布于 2022-03-26 09:36:17

首先检查数据是否是列表或不像下面这样

代码语言:javascript
复制
List myFun(snapshot) {

return (snapshot.data is List)? snapshot.data as List : []

}

现在你可以这样用它了

代码语言:javascript
复制
myFun(snapshot).isNotEmpty? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);
票数 3
EN

Stack Overflow用户

发布于 2022-03-25 17:40:37

试试snapshot.data!.length

注意!

也请阅读以下内容以获得澄清:Dart Null安全

票数 0
EN

Stack Overflow用户

发布于 2022-03-26 20:01:54

好吧,所以我不认为你的问题是空安全或者!

您的错误与不能在动态对象上调用.length这一事实有关。

因此,要解决这个问题(显然是在您将!放在data之后),您应该为快照参数提供一个类型。

因此,例如,如果您的数据是一个列表,您应该这样做:

代码语言:javascript
复制
builder: (context, AsyncSnapshot<List> snapshot){
        return snapshot.data!.length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);},
    );

我希望这能解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71620938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档