Я получаю [] не определено для ошибки объекта в dart при выполнении урока по Flutter Firebase?

# #firebase #flutter #dart #google-cloud-firestore

Вопрос:

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

Я получаю эту ошибку под [«имя»], [«спорт»] и [«возраст»], и я не знаю, как это исправить, потому что для парня в учебнике это не дает ему этой ошибки? Я недавно задал этот вопрос и, основываясь на ответе, изменил свой код на такой:

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

Комментарии:

1. Вы можете попробовать распечатать данные в final data = doc.data as Map<String, dynamic>; ? Я хочу проверить ваши данные.

2. Попробуйте свой метод: int.parse(data['age'])??0

Ответ №1:

doc.данные[] устарели. Вместо этого используйте 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(); }