【问题标题】:I'm getting an [] isn't defined for Object error in dart when I'm trying to follow this Flutter Firebase tutorial?当我尝试遵循这个 Flutter Firebase 教程时,我得到一个 [] is not defined for Object error in dart?
【发布时间】:2021-10-19 04:16:25
【问题描述】:
List<Sport?> _sportListFromSnapshot(QuerySnapshot snapshot){
    return snapshot.docs.map((doc){
      return Sport(
         name: doc.data['name'] ?? '',
         sport: doc.data['sport'] ?? '',
         age: doc.data['age'] ?? 0
      );

    }).toList();
}

我在 ['name']、['sport'] 和 ['age'] 下遇到此错误,我不知道如何解决它,因为对于教程中的人来说,它没有给他这个错误?

这是我的体育课:

class Sport {
   final String name;
   final String sport;
   final int age;

   Sport({required this.name, required this.sport, required this.age});
}

【问题讨论】:

  • 可以更新您的问题并将确切的错误粘贴到代码块中吗?

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

根据文档QuerySnapshot 实际上是QuerySnapshot&lt;T extends Object?&gt; 类型,因此所有分析器都知道每个文档的每个data 属性至少是Object。您需要通过定义泛型来提供更多信息,例如:

List<Sport?> _sportListFromSnapshot(QuerySnapshot<Map<String, dynamic>> snapshot){ ...

或将其转换为回调的主体,如:

List<Sport?> _sportListFromSnapshot(QuerySnapshot snapshot){
    return snapshot.docs.map((doc){
      final data = doc.data as Map<String, dynamic>;
      return Sport(
         name: data['name'] ?? '',
         sport: data['sport'] ?? '',
         age: data['age'] ?? 0
      );

    }).toList();
}

本教程可能放宽了分析器规则,我认为这对观众不利。

【讨论】:

  • 这并没有解决我的错误,可能是因为年龄不是字符串变量?
猜你喜欢
  • 1970-01-01
  • 2022-10-15
  • 2022-11-21
  • 2022-12-11
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
相关资源
最近更新 更多