【问题标题】:The getter 'length' isn't defined for the type 'Object'没有为“对象”类型定义吸气剂“长度”
【发布时间】:2021-08-28 21:28:16
【问题描述】:

在 listViewBuilder 的 itemCount 属性中检查 snapshot.data 的长度时,我收到以下错误“没有为类型 'Object' 定义 getter 'length'”:

child: StreamBuilder(
       stream:_firestoreService?.getProducts(), 
             builder: (context, snapshot) {
                   if (!snapshot.hasData) {
                          return CircularProgressIndicator();
                   } else {
                          return ListView.builder(
                                 itemExtent: 80,
                                 itemCount: snapshot.data!.length,
                                 itemBuilder: (context, index) {

数据来自firestore

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    我认为你需要做的改变在这条线上builder: (context, snapshot)

    当您使用该签名时,分配给快照的类型是 AsyncSnapshot ,它没有定义 length getter。

    但是,如果您将构建器行修改为builder: (context, AsyncSnapshot snapshot),那么您将在snapshot.data 上获得length getter。将其用作snapshot.data!.length

    总结一下,我觉得应该是这样的:

    child: StreamBuilder(
           stream:_firestoreService?.getProducts(), 
                 builder: (context, AsyncSnapshot snapshot) {
                       if (!snapshot.hasData) {
                              return CircularProgressIndicator();
                       } else {
                              return ListView.builder(
                                     itemExtent: 80,
                                     itemCount: snapshot.data!.length,
                                     itemBuilder: (context, index) {
    

    【讨论】:

      【解决方案2】:

      在最新版本的cloud_firestore 插件中,您需要指明查询的类型,然后才能从中获取数据。我建议查看migrating to version 2.0 上的文档,这表明这通常看起来会发生变化

      Query query
      

      Query<Map<String, dynamic>> query
      

      您需要更改的确切代码取决于您的实现,并且从您共享的内容中不清楚,但它将是某种类型的注释,如上所示(以及在我链接的文档中)。

      【讨论】:

      • 我已经进行了调整,但遗憾的是,问题没有得到解决。
      • 毕竟你是对的。虽然,通话发生了一些变化。谢谢
      【解决方案3】:

      在代码中使用 AsyncSnapshot 快照而不是仅使用快照。

      这是使用

      builder: (context, AsyncSnapshot snapshot) {}
      

      而不是

      builder: (context, snapshot) {}
      

      它为我工作了 10000%。

      【讨论】:

        猜你喜欢
        • 2021-09-29
        • 2021-11-18
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 2021-09-17
        • 2021-08-22
        • 2021-03-26
        相关资源
        最近更新 更多