Flutter Dart:如何使用 2 个键将 List 转换为 Map

Posted

技术标签:

【中文标题】Flutter Dart:如何使用 2 个键将 List 转换为 Map【英文标题】:Flutter Dart : How to convert List to Map with 2 key 【发布时间】:2020-10-04 11:27:49 【问题描述】:

我在将列表转换为地图时遇到问题,我正在使用map.fromiterable 来转换我的列表,但它只能显示 1 个数据和 1 个键。 这是它的输出:

[id_apd: 4]

这是我的班级模型列表,

class APDPengajuanModel 
  final int id_apd;
  final int jumlah;

  APDPengajuanModel(this.id_apd, this.jumlah);


这是我将列表转换为地图的函数。

void toMap() 
Map<String, dynamic> id_apd = Map.fromIterable(
        Provider.of<myProvider>(context, listen: false).listAPD,
        key: (v) => "id_apd",
        value: (v) => v.id_apd.toString());
print(id_apd);

从我上面的代码中,它只能显示 id_apd 而不能显示列表中的 jumlah 变量。

请帮助如何同时显示 id_apd 和 jumlah :)

这是我希望的输出,但不是这样显示的。

[
  
    "id_apd": 1,
    "jumlah" : 15
  
]

【问题讨论】:

【参考方案1】:

我认为标题的含义与您希望的输出之间存在差异。 这是您希望的结果的代码。

var result = listAPD.map((item) 
    return  "id_apd": item.id_apd, "jumlah" : item.jumlah ;
  ).toList();
print(result);

【讨论】:

很抱歉我不能投票,我的声誉在 15 岁以下。但再次感谢 你也可以使用列表文字:dart var result = [for (var item in listAPD) "id_apd": item.id_apd, "jumlah": item.jumlah]; print(result); 感谢您的解决方案,我也赞成【参考方案2】:

我假设您有 2 个列表要合并到列表映射中

final listPengajuan = ["id_apd","jumlah"];
final nilai = [1,5];

final paket = ;
final hasil = [];

 for(var i = 0; i < listPengajuan.length; i++)
  paket.addAll(listPengajuan[i]:nilai[i]);
 
 
 hasil.add(paket);

 print(JsonEncoder.withIndent(" ").convert(hasil));

结果:

[
 
  "id_apd": 1,
  "jumlah": 5
 
]

【讨论】:

【参考方案3】:

我认为这是因为您通过相同的键“id_apd”添加了列表项来映射。

ex )
<List>
[id_apd: 2, id_apd: 3, id_apd: 4]

<Map>
iteration 1:  id_apd: 2
iteration 2:  id_apd: 3
iteration 3:  id_apd: 4

【讨论】:

如何使用 map.fromiterable 设置多个键?

以上是关于Flutter Dart:如何使用 2 个键将 List 转换为 Map的主要内容,如果未能解决你的问题,请参考以下文章

Dart Flutter:如何从作用域模型运行动画?

如何使用 Dart / Flutter 中的列表从列表中删除重复元素?

(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字

如何降级 Flutter SDK (Dart 1.x)

Dart / Flutter:Isolate ***函数的异步行为

如何从我的简单.dart文件创建插件以在Flutter中使用?