',json,firebase,flutter,google-cloud-firestore"/>

首页 > 解决方案 > Flutter - 参数类型'Object'不能分配给参数类型'Map'

问题描述

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

  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() 参数时,就会出现问题。我不能完全投入其中。

标签: jsonfirebasefluttergoogle-cloud-firestore

解决方案


You probably need to explicitly cast doc.data()! to Map<String, dynamic>. Like this:

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

Or correctly define the generic type of DocumentSnapshot, like this:

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

推荐阅读