繁体   English   中英

当我尝试按照此 Flutter Firebase 教程进行操作时,在 dart 中出现 [] is not defined for Object 错误?

[英]I'm getting an [] isn't defined for Object error in dart when I'm trying to follow this Flutter Firebase tutorial?

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});
}

根据文档QuerySnapshot实际上是QuerySnapshot<T extends Object?>因此所有分析器都知道每个文档的每个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();
}

该教程可能放宽了分析器规则,在我看来,这对观众不利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM