我有一个 Match 类,其中包含 Team 类型的其他类的列表。仅当列表为空时,才可以将新文档(匹配)上传到 Firestore。一旦列表中存在团队项目,请尝试将其添加到 Firestore 中无效参数:“团队”实例'。 Team类只包含简单的字段,没有其他类。
StandardMessageCodec.writeValue 引发异常
Update:我正在使用 cloud_firestore: ^0.8.2,并调用
await firestore.collection('matches').document(match.id).setData(match);
由于除了 setData (接受地图)之外没有其他方法允许上传,因此我尝试了 match.teams (列表):
- “团队”:团队(列表)
- 'teams' :完全编码为 json (字符串)
- 'teams' :对各个团队项目进行编码并添加到集合(列表)
第一个选项将失败,第二个选项将创建一个字符串文档成员,第三个选项将在成员内创建一个字符串数组,这都不是我想要的 - 在文档内创建一个团队对象数组
要彻底解决上述问题,请按以下步骤操作:
Steps:
使用 json_serialized 插件(链接:https://pub.dev/packages/json_serialized https://pub.dev/packages/json_serializable)
-
在您的 Match 类的以下类级别 json_serialized 注释(注意选项)
'match.g.dart' 部分; //实际文件会自动生成
@JsonSerialized(anyMap:true,explicitToJson:true)
-
对您的 Team 类执行相同的操作(上面 2 中)(您可以忽略选项:explicitToJson):
'team.g.dart' 部分; //会自动生成
@JsonSerialized(anyMap: true)
-
在您的终端或控制台(位于项目的根目录)中,运行:flutter pub run build_runner 构建为序列化类文件生成所有必需的: *.g.dart 文件(即 match.g.dart、team.g.dart)
[pc-name]:[project_root_dir] [用户名}$ flutter pub run build_runner build
我真的希望这能像解决我的问题一样完全解决您的问题。
参考:https://flutter.dev/docs/development/data-and-backend/json https://flutter.dev/docs/development/data-and-backend/json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)