flutter 将一系列贴图转换为单个贴图

ncecgwcz  于 2023-01-14  发布在  Flutter
关注(0)|答案(3)|浏览(131)

我有一个列表的MapFlutter与每个Map只有2个关键字。我想把它们转换成一个单一的Map,其中第一个关键字是一个关键字和第二个关键字成为价值。
这是Map列表

List results = [[
  { key: shortcuts_cart_createCart, value: 0 },
  { key: shortcuts_cart_discountCartTotal, value: 0 },
  { key: shortcuts_selling_cart, value: 0 },
]

我想将列表转换为该Map

Map shorts = {
      shortcuts_selling_cart : 0,
      shortcuts_cart_createCart : 0,
      shortcuts_cart_discountCartTotal : 0
}

我如何实现这一目标

zaq34kh6

zaq34kh61#

你可以试试这个

List results = [
{ "key": "shortcuts_cart_createCart", "value": 0 },
{ "key": "shortcuts_cart_discountCartTotal", "value": 0 },
{ "key": "shortcuts_selling_cart", "value": 0 },
];

var map={};

 results.forEach((element){
map[element["key"]]=element["value"];
 });

 print(map);
yqyhoc1h

yqyhoc1h2#

您可以使用Map.fromIterable并通过一行来完成此操作:

var result = Map.fromIterable(l, key: (v) => v[0], value: (v) => v[1]);

但是romIterable的类型非常弱,所以collection-for是唯一推荐的方法,它是:

var result = { for (var v in l) v[0]: v[1] };
sczxawaw

sczxawaw3#

我会使用MapEntry

Map.fromEntries(results.map(
  (innerMap) => MapEntry(innerMap['key'], innerMap['value']),
));

还要注意你的代码在语法上是无效的。在Dart中,你必须总是用引号引住字符串,即使它们是map中的键,请查看文档。

相关问题