Как исправить тип «_InternalLinkedHashMap <динамический, динамический>» не является подтипом типа «Список <dynamic>» в приведении типа - PullRequest
0 голосов
/ 13 января 2019

я создал метод, и когда я его построил, появляется эта ошибка:

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. Кто-нибудь может мне помочь?

Спасибо

EDIT:

Я называю это так:

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

данные выглядят так:

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

EDIT:

enter image description here

Похоже на это!

EDIT:

enter image description here

1 Ответ

0 голосов
/ 13 января 2019

попробуйте изменить это:

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

к этому:

 final List list = parsedJson["Produkte"] as List;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...