如何在类型转换

时间:2019-01-13 18:19:12

标签: dart flutter google-cloud-firestore

我创建了一个方法,当我构建它时,出现此错误:

type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'List<dynamic>' in type cast

然后我删除了该方法,错误仍然存​​在。

这是我的代码:

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']
    );
  }

  Map<String, dynamic> toProduktJson() =>
  {
    "Name" : name,
    "Anzahl" : 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.cast<String, dynamic>())).toList();

    return ProduktList(
        produkte: produkte,
    );
  }

  Map<String, dynamic> toProdukteJson() =>
  {
    "Produkte" : [
      produkte[0].toProduktJson(),
      produkte[1].toProduktJson(),
    ]
  };
}

我认为错误来自这里,但是我不确定:

datenUebertragen(int index, AsyncSnapshot<QuerySnapshot> snapshot, ProduktList produkte){

    Firestore.instance.runTransaction((transaction) async{
      await transaction.update(
      Firestore.instance.collection("Benutzer").document("Anton").collection("Einkaufsliste").document(
        snapshot.data.documents[index].documentID),
        produkte.toProdukteJson()
      );
  }
);
 }

我在IconButton onPressed上调用此方法。 谁能帮我吗?

谢谢

编辑:

我这样称呼它:

ProduktList produkte = new ProduktList.fromJson(snapshot.data.documents[index].data);

数据如下:

{Produkte: [{Anzahl: 201, Name: Zucker}, {Anzahl: 10, Name: Backpulver}]}

编辑:

enter image description here

看起来像这样!

编辑:

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试更改此内容:

 var list = parsedJson["Produkte"] as List;

对此:

 final List list = parsedJson["Produkte"] as List;