Как исправить эту ошибку: «_InternalLinkedHashMap <dynamic, dynamic>» не является подтипом типа «Map <String, dynamic>» - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь проанализировать документ из 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{
  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 голосов
/ 13 января 2019

Объект карты, который вы используете для parsedJson, явно не является 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();

посмотрите на похожий вопрос здесь: Как привести `_InternalLinkedHashMap`, созданный из json?

Если это не поможет, пожалуйста, добавьте код того, как вы используете ProduktList.fromJson, чтобы у нас было больше информации об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...