Flutter Dart:从值中找到键并添加到新列表中

Flutter Dart:从值中找到键并添加到新列表中,flutter,dart,Flutter,Dart,我试图搜索某些值并添加到列表中 a = [ {anna: 2}, {jane: 9}, {paul: 1}, ] b = [1, 2], 我想从列表b的值中搜索列表a上的名称。使列表c变为 [paul, anna] 我成功地循环了列表b。但是,我无法查找值并返回要添加到列表c中的键 List.generate( b.length, (index) { <----- stuck -----> }); List.generat

我试图搜索某些值并添加到列表中

a = [
   {anna: 2},
   {jane: 9},
   {paul: 1},
]

b = [1, 2],
我想从
列表b
的值中搜索
列表a
上的名称。使列表c变为

[paul, anna]
我成功地循环了
列表b
。但是,我无法查找值并返回要添加到
列表c
中的键

List.generate(
        b.length, (index) {
      <----- stuck ----->
    });
List.generate(
b、 长度(索引){
});
我知道我可以使用.addAll添加到
列表c
。如何返回
列表a的键值?

也许您可以试试这个

var a = [
  {"anna": 2},
  {"jane": 9},
  {"paul": 1},
];

var b = [1, 2];

List c = [];
for (var item in a) if(b.contains(item.values.first)) c.add(item.keys.first);
也许你可以试试这个

var a = [
  {"anna": 2},
  {"jane": 9},
  {"paul": 1},
];

var b = [1, 2];

List c = [];
for (var item in a) if(b.contains(item.values.first)) c.add(item.keys.first);

这是另一个解决方案:

var names = a.where((e) => b.contains(e.values.first)).map<String>((e) => e.keys.first).toList();
var name=a.where((e)=>b.contains(e.values.first)).map((e)=>e.keys.first).toList();

这是另一种解决方案:

var names = a.where((e) => b.contains(e.values.first)).map<String>((e) => e.keys.first).toList();
var name=a.where((e)=>b.contains(e.values.first)).map((e)=>e.keys.first).toList();

你确定你有一个列表而不仅仅是一个地图吗?这是因为数据来自mongoDB。你确定你有一个列表而不仅仅是一个地图吗?这是因为数据来自mongoDB。