【问题标题】:How to fix this Error: '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'如何解决此错误:“_InternalLinkedHashMap<dynamic, dynamic>”不是“Map<String, dynamic>”类型的子类型
【发布时间】:2019-06-07 15:25:31
【问题描述】:

我尝试在我的颤振应用程序中解析来自 Firestore 的文档。

Firestore 文档:

我创建了两个类来解析这个文档。

类产品:

class Produkt{
  String name;
  int anzahl;

  Produkt({
    this.name,
    this.anzahl,
  });

  factory Produkt.fromJson(Map<String, dynamic> parsedJson){
    return Produkt(
        name:parsedJson['Name'],
        anzahl:parsedJson['Anzahl']
    );
 }
}

类产品列表:

class ProduktList{
  final List<Produkt> produkte;

  ProduktList({
    this.produkte,
  });

  factory ProduktList.fromJson(Map<String, dynamic> parsedJson){
    var list = parsedJson["Produkte"] as List;
    List<Produkt> produkte = list.map((i) => Produkt.fromJson(i)).toList();

    return ProduktList(
        produkte: produkte,
    );
  }
}

当我构建这个时抛出异常:

type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'

我认为,错误发生在这里:

List<Produkt> produkte = list.map((i) => Produkt.fromJson(i)).toList();

你们有一个想法我可以如何解决这个问题? 感谢您的回答!

【问题讨论】:

    标签: dart flutter google-cloud-firestore


    【解决方案1】:

    您用于 parsedJson 的 Map 对象显然不是 Map&lt;String, dynamic&gt;。

    假设我们能够将此对象转换为Map&lt;String, dynamic&gt;,请尝试:

    List<Produkt> produkte = list.map((i) => Produkt.fromJson(i.cast<String, dynamic>())).toList();
    

    或:

    List<Produkt> produkte = list.map((i) => Produkt.fromJson(Map<String, dynamic>.from(i))).toList();
    

    在这里查看一个类似的问题: How to cast an `_InternalLinkedHashMap` created from json?

    如果没有帮助,请添加您如何使用ProduktList.fromJson的代码,以便我们了解有关错误的更多信息。

    【讨论】:

      猜你喜欢
      • 2018-12-14
      • 2019-09-21
      • 2019-04-03
      • 1970-01-01
      • 2019-03-23
      • 2019-05-02
      • 2021-04-03
      • 2019-01-03
      • 2020-03-03
      相关资源
      最近更新 更多