如何循环创建地图?

时间:2019-01-13 22:31:01

标签: dart flutter google-cloud-firestore

我尝试构建将地图添加到Firestore中的地图。

产品类别:

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
  };
}

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(),
      produkte[2].toProduktJson(),
    ]
  };
}

我希望地图看起来像:

{
    "Produkte" : [
      produkte[0].toProduktJson(),
      produkte[1].toProduktJson(),
      produkte[2].toProduktJson(),
    ]
  };

但是,如果List产品的长度为2,则Map应具有2,而List的长度为10,则Map应具有10个条目。

我该怎么做? 请帮助我。 谢谢

1 个答案:

答案 0 :(得分:1)

选项如下:

  Map<String, dynamic> toProdukteJson() {
    Map map = new Map<String, dynamic>();
    if (produkte != null) {
      map["produkte"] = produkte.map((produkt) => produkt.toJson()).toList();
    }
    return map;
  }


class Produkt {
  final String id;
  ...

  Produkt(this.id, ...);

  Map toJson() => {'id' : id, ...};
}