Flutter - 无法将参数类型“Object”分配给参数类型“Map<String, dynamic>”

时间:2021-05-13 10:15:39

标签: json firebase flutter google-cloud-firestore

所以我一直在研究这个项目,一切都很好,直到我将包迁移到空安全并遇到了这个错误。代码如下:

  factory AdminDto.fromJson(Map<String, dynamic> json) => _$AdminDtoFromJson(json);

  factory AdminDto.fromFirestore(DocumentSnapshot doc) {
    return AdminDto.fromJson(doc.data()!).copyWith(id: doc.id);
  }
}

有人可以帮我解决这个问题吗?当涉及到 doc.data() 参数时会出现问题。我无法完全投入进去。

1 个答案:

答案 0 :(得分:0)

您可能需要将 doc.data()! 显式转换为 Map<String, dynamic>。像这样:

return AdminDto.fromJson(doc.data()! as Map<String, dynamic>).copyWith(id: doc.id);

或者正确定义DocumentSnapshot的泛型类型,如下所示:

factory AdminDto.fromFirestore(DocumentSnapshot<Map<String, dynamic>> doc) {
    return AdminDto.fromJson(doc.data()!).copyWith(id: doc.id);
}