Arn*_*les 5 json dart firebase flutter google-cloud-firestore
我想在 firebase 的帖子文档中引用类别文档。\n这是我的数据类,我还使用 freezed 和 json_serializer:
\n\n\n 'post_dto.freezed.dart' 部分;\n 'post_dto.g.dart' 部分;\n 'category_dto.freezed.dart' 部分;\n 'category_dto.g.dart' 部分;\n \n @freezed\n 带有 _$PostDTO 的抽象类 PostDTO {\n const PostDTO._();\n \n const 工厂 PostDTO({\n @JsonKey(ignore: true) String? id,\n 必需的字符串标题,\ n 必需的字符串描述,\n @DocumentReferenceConveter() DocumentReference?categoryReference,\n }) = _PostDTO;\n \n 工厂 PostDTO.fromJson(Map json) =>\n _$PostDTOFromJson(json);\n \n 工厂PostDTO.fromFireStore(DocumentSnapshot document) {\n Map data = document.data() as Map;\n return PostDTO.fromJson(data).copyWith(id: document.id);\n }\n }\n \n @freezed\n 带有 _$CategoryDTO 的抽象类 CategoryDTO {\n const CategoryDTO._();\n \n const 工厂 CategoryDTO({\n 必需的字符串图标,\n 必需的字符串名称,\n }) = _CategoryDTO;\ n \n 工厂 CategoryDTO.fromFireStore(DocumentSnapshot document) {\n Map data = document.data() as Map;\n return CategoryDTO.fromJson(data);\n }\n \n 工厂 CategoryDTO.fromJson(Map json) =>\n _$CategoryDTOFromJson(json);\n }\n\n\n
当我运行 build_runner 时,出现以下错误:
\n\n\n [严重] lib/infrastruct/post/post_dto.dart 上的 json_serialized:json_serializable:\n \n 无法为 `categoryReference` 生成 `fromJson` 代码。\n 要支持 `DocumentReference` 类型,您可以:\ n * 使用 `JsonConverter`\n https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonConverter-class.html\n * 使用 `JsonKey` 字段 `fromJson` 和 `toJson`\n https:// pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/fromJson.html\n https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/toJson.html\n 包:UPLFY/infrastruct/post/ post_dto.freezed.dart:373:41\n \xe2\x95\xb7\n 373 \xe2\x94\x82 最终文档参考?categoryReference;\n \xe2\x94\x82 ^^^^^^^^^^^^^^^^^^\n \xe2\x95\xb5\n [INFO] 运行构建完成,耗时 2.5 秒\n \ n [INFO] 缓存最终的依赖关系图...\n [INFO] 缓存最终的依赖关系图已完成,耗时 44 毫秒\n \n [严重] 2.5 秒后失败\n\n\n
所以尝试使用 JsonConverter 但我不确定如何将 json 对象转换为 DocumentReference...
\n\n\n class DocumentReferenceConveter\n Implements JsonConverter, Object> {\n const DocumentReferenceConveter();\n \n @override\n DocumentReference fromJson(Object json) {\n return //TODO: 将 json 转换为 DocumentReference\n } \n \n @override\n Object toJson(DocumentReference documentReference) =>\n documentReference;\n }\n\n\n
小智 0
我一直在调查,发现存在与某些版本的分析器包相关的问题。我将其留在这里,以防它对社区中的某人有用(如果您使用“0.39.15”或“0.39.16”版本,这可能是原因)。如果是这种情况,您现在可以在 pubspec.yaml 中设置覆盖:
dependency_overrides:
analyzer: '0.39.14'
Run Code Online (Sandbox Code Playgroud)
此外,您应该在执行以下操作后清除所有缓存:
flutter clean
flutter pub cache repair
flutter pub run build_runner clean
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2107 次 |
最近记录: |