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);

它按预期工作。我怎么了?任何评论表示赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)