首页 > 解决方案 > 如何在循环中创建地图?

问题描述

我尝试构建地图以将其添加到 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
  };
}

产品列表类:

  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 个条目。

我怎样才能做到这一点?请帮助我。谢谢

标签: dartfluttergoogle-cloud-firestore

解决方案


一个选项如下:

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

推荐阅读