Использование firestore с json_serializable после нулевой безопасности
Я использую json_serializable и firestore. json_serializable создает фабричный метод с параметром Map<String, dynamic>, но после изменений нулевой безопасности firestore начинает возвращать Map<String, dynamic>? в качестве данных документа, и теперь я не могу вызвать фабрику json_serializable для сопоставления типов моих хранилищ огня, потому что отображается это сообщение об ошибке:
The argument type 'Map<String, dynamic>?' can't be assigned to the parameter type 'Map<String, dynamic>'
Может кто-то помочь мне с этим? Я больше не могу использовать json_serializable с firestore?
Я написал такой пример:
class Entity {
const Entity({required this.id});
final String id;
factory Entity.fromJson(Map<String, dynamic> json) => _$EntityFromJson(json);
Map<String, dynamic> toJson() => _$EntityToJson(this);
}
class Repository {
Stream<List<Entity>> list() {
return FirebaseFirestore.instance.collection('entity').snapshots().map((event) {
return event.docs.map((e) {
return Entity.fromJson(
e.data() // The argument type 'Map<String, dynamic>?' can't be assigned to the parameter type 'Map<String, dynamic>'
);
}).toList();
});
}
}
1 ответ
Я не знаю, что это правильный способ, но я использую ключевое слово as для преобразования типа из Object в Map <String, dynamic> Пример изображения
doc.data() as Map<String, dynamic>