首页 > 解决方案 > 如何将 API 值添加到列表中?

问题描述

这是 API 响应

[
   {
     "building_name": "Burj Khalifa",
    "unit_number": "101",
    "unit_type": "flat",
    "sub_type": "1bhk",
    "unit_space": "500",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
   },
   {
    "building_name": "Burj Khalifa",
    "unit_number": "102",
    "unit_type": "flat",
    "sub_type": "2bhk",
    "unit_space": "900",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
    },
    {
    "building_name": "alzimar",
    "unit_number": "103",
    "unit_type": "flat",
    "sub_type": "1bhk",
    "unit_space": "500",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
    },
]
  1. 我想将“building_name”添加到列表中
  2. 同名不能重复

我试过这种方式但没有工作

static List<Map<String, String>> choices = <Map<String, String>>[
    {
        "title": building_name, "id": building_name
    },
];

我正在调用这个值

child: Text(choice["title"],),

标签: androidiosflutterdartflutter-layout

解决方案


这是我的做法:

List apiResponseList = [
   {
     "building_name": "Burj Khalifa",
    "unit_number": "101",
    "unit_type": "flat",
    "sub_type": "1bhk",
    "unit_space": "500",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
   },
   {
    "building_name": "Burj Khalifa",
    "unit_number": "102",
    "unit_type": "flat",
    "sub_type": "2bhk",
    "unit_space": "900",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
    },
    {
    "building_name": "alzimar",
    "unit_number": "103",
    "unit_type": "flat",
    "sub_type": "1bhk",
    "unit_space": "500",
    "annual_rent": "25000",
    "annual_rent_in_word": "twenty five thousand "
    },
 ];

然后映射apiResponseList到新列表中:

List<Map<String, String>> choices = [];

  for (var item in apiResponseList) {
    if (choices.isEmpty) {
      choices
          .add({"title": item['building_name'], "id": item['building_name']});
    } else {

    //This adds the map only if `choices` does not contain the same `building name`
      if (choices.any((test) => test['title'] != item['building_name'])) {
        choices
            .add({"title": item['building_name'], "id": item['building_name']});
      }
    }
  }

如果你跑print(choices),你会得到

[{title: Burj Khalifa, id: Burj Khalifa}, {title: alzimar, id: alzimar}]

推荐阅读