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