如何解决此错误:'_InternalLinkedHashMap <dynamic,dynamic =“”>'不是'Map <string,dynamic =“”>'类型的子类型

时间:2019-01-13 10:31:44

标签: dart flutter google-cloud-firestore

我尝试在Flutter应用中解析Firestore中的文档。

Firestoredocument:

enter image description here

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

类产品:

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:

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

你们伙计们有个主意我该如何解决这个问题? 谢谢您的回答!

1 个答案:

答案 0 :(得分:1)

您用于parsedJson的Map对象显然不是Map<String, dynamic>

假设我们能够将此对象投射到Map<String, dynamic>,请尝试:

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的代码,以便我们详细了解该错误。