【问题标题】:The operator '[]' isn't defined for the type 'Object' since update of Flutter [duplicate]自从 Flutter 更新以来,没有为“Object”类型定义运算符“[]”[重复]
【发布时间】:2021-08-18 18:33:03
【问题描述】:

几个月后,我又开始着手我的项目了。我已经更新了 Flutter 版本,现在我不能再运行我的应用程序了。 我遇到了很多错误。

我已经做了一些谷歌搜索,但我没有找到明确的解决方案。您的帮助将不胜感激。非常感谢。

child: Row(
                        crossAxisAlignment: CrossAxisAlignment.start,
                  
                        children:
                        snapshot.data.docs.map((documentSnapshot) {
                        print(documentSnapshot.data());

                        recordID = documentSnapshot.id; 
                          return Text(documentSnapshot
                              .data()['task_Name']); //Error is The operator '[]' isn't defined for the type 'Object'.
                        }
                        ).toList(),
                      ),

【问题讨论】:

  • this 会回答您的问题吗?还有this
  • 我不喜欢使用 Json。我只想使用 FireBase。谢谢

标签: flutter firebase-realtime-database


【解决方案1】:

通过观察您的数据和代码,我认为 filesnapshot.data() 包含对象而不是 json 数据。\

每当您调用 documentSnapshot.data()["task_Name"] 时,它都会抛出错误

这是我在您提供的代码中发现的问题

请通过打印确认您的documentsnapshot.data() 包含哪些内容。

【讨论】:

  • 我正在使用 FireBase。我希望这会有所帮助。事实上,现在,我无法运行该应用程序。自flutter更新以来,我的所有观点都出现了这个错误。
  • 我能知道你在打印documentsnapshot.data()时得到了什么,比如至少在commnets中添加一些信息
  • 在更新之前,它运行良好。我猜随着更新,有一种新的方式来编写代码
【解决方案2】:

您需要从cloud_firestore 2.0.0 指定您期望从DocumentSnapshot 获得的数据类型。

查看migration guide

您应该将代码更新为:

    Map<String, dynamic> snapshotData = documentSnapshot.data() as Map<String, dynamic>;
    return Text(snapshotData['task_Name']);

【讨论】:

  • 谢谢。我已经尝试过您的解决方案,但我收到一条新错误消息无法将参数类型“Map”分配给参数类型“String”。
  • 查看控制台,错误指向哪一行?
  • 第 74 行,即 return Text(documentSnapshot.data() as Map['task_Name']);
  • 好的。我已经更新了代码。请试试这个。
  • 在这个观点上,它似乎有效。我不再看到错误消息。但是,我在另一个地方尝试过,但我无法让它工作。拜托,你能再帮我一次吗? ``` ``` 子:文本(document.data()['contexts'],maxLines:2,溢出:TextOverflow.ellipsis,),
猜你喜欢
  • 1970-01-01
  • 2021-04-03
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2021-07-30
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多