# #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();
}
Я получаю эту ошибку под [«имя»], [«спорт»] и [«возраст»], и я не знаю, как это исправить, потому что для парня в учебнике это не дает ему этой ошибки?
Это мой спортивный класс:
class Sport {
final String name;
final String sport;
final int age;
Sport({required this.name, required this.sport, required this.age});
}
Комментарии:
1. Можете обновить свой вопрос, и вы вставите точную ошибку в блок кода?
Ответ №1:
На основе документации 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();
}
В учебнике, вероятно, были смягчены правила анализатора, что, на мой взгляд, оказывает медвежью услугу аудитории.
Комментарии:
1. Это не исправило мою ошибку, может быть, потому, что возраст не является строковой переменной?