【问题标题】:I'm getting an [] isn't defined for Object error in dart when following a Flutter Firebase tutorial?在遵循 Flutter Firebase 教程时,我收到 [] 未定义对象错误?
【发布时间】:2021-10-20 02:47:28
【问题描述】:
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'] 下遇到此错误,我不知道如何解决它,因为对于教程中的人来说,它没有给他这个错误?我最近问了这个问题,并根据答案将代码更改为:

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

但这仍然不能解决我的错误?我认为这是因为我的年龄变量是 int 而不是字符串。有人可以告诉我如何解决这个问题,因为我正在关注的教程中的人没有收到这些错误吗?

这是我的体育课:

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

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

【问题讨论】:

  • 您可以尝试打印final data = doc.data as Map&lt;String, dynamic&gt;;中的数据吗?我想验证你的数据。
  • 试试你的方法:int.parse(data['age'])??0

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

doc.data[] 已弃用。改用 doc.get() 并这样做

List<Sport?> _sportListFromSnapshot(QuerySnapshot snapshot){
  return snapshot.docs.map((doc){
    return Sport(
       name: doc.get('name') ?? '',
       sport: doc.get('sport') ?? '',
       age: doc.get('age') ?? 0
    );

  }).toList();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2021-01-14
    • 2018-03-14
    • 1970-01-01
    • 2016-04-12
    相关资源
    最近更新 更多