如何解决fromJson 抛出预期类型为 'Map<String, dynamic>' 的值,但得到类型为 '_JsonDocumentSnapshot' 的值
我正在尝试使用 json_serializable:
。
我的 pubspec.yaml
dependencies:
json_annotation: 3.1.1
dev_dependencies:
build_runner:
json_serializable: 3.5.1
我来自 Firestore 的流
static Stream<DocumentSnapshot<Object>> getOrderById(String docId) {
return database().collection('orders').doc(docId).snapshots();
}
我的工厂在 order.dart
factory Order.fromJson(Map<String,dynamic> json) => _$OrderFromJson(json);
order.g.dart
Order _$OrderFromJson(Map<String,dynamic> json) {
return Order(
common: json['common'] == null
? null
: OrderCommon.fromJson(json['common'] as Map<String,dynamic>),// goes like this
当我调用这个方法时
Order doc = Order.fromJson(snapshot.data);
扔给我Expected a value of type 'Map<String,dynamic>',but got one of type '_JsonDocumentSnapshot'
但是当我添加另一个完全相同的工厂时,只是期望参数不同。
order.dart
factory Order.fromSnapshot(DocumentSnapshot json) {
return Order(
common: json['common'] == null
? null
: OrderCommon.fromJson(json['common'] as Map<String,// goes like this but EXACTLY same with order.g.dart OrderFromJson
然后打电话给 当我像
这样调用这个方法时Order doc = Order.fromSnapshot(snapshot.data);
它按预期工作。我怎么了?任何评论表示赞赏。
解决方法
我们应该让 Flutter 知道 snapshot.data
是一个 Map<String,dynamic>
:
Order doc = Order.fromJson(snapshot.data as Map<String,dynamic>);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。