我使用json_serializable和firestore。json_serializable使用Map<字符串,动态>作为参数,但在nullsafety更改后,firestore开始返回Map<字符串,动态>?作为文档数据,现在我不能调用json_serializable工厂来映射我的firestore类型,因为显示以下错误消息: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();
});
}
}
我不知道这是正确的方法,但我使用"as"关键字将类型从Object转换为Map<字符串,动态>图像示例
doc.data() as Map<String, dynamic>