【问题标题】:How to fix type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'List<dynamic>' in type cast如何修复类型 '_InternalLinkedHashMap<dynamic, dynamic>' 不是类型转换中类型 'List<dynamic>' 的子类型
【发布时间】:2019-01-13 18:19:11
【问题描述】:

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

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{
  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}]}

编辑:

看起来像这样!

编辑:

【问题讨论】:

  • 调用 ProduktList.fromJson 之前的数据是什么?
  • 我编辑通话并记录它!!!
  • 嗯,如果您将数据模型的屏幕截图放在 Firestore 中会更好。
  • 我编辑图片
  • 产品是一个数组?是地图?是一个对象吗?

标签: dart flutter google-cloud-firestore


【解决方案1】:

尝试改变这个:

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

到这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 2021-01-30
    • 2019-04-03
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2020-03-03
    • 2021-04-03
    相关资源
    最近更新 更多