如何从Dart中的List <map <string,string =“” >>创建List <string>?

时间:2019-02-11 15:31:06

标签: collections dart flutter

我有一个Map,看起来像这样

{
    title: "Hello world",
    images: [
        { url: "http://example.com/image1" },
        { url: "http://example.com/image2" },
        { url: "http://example.com/image3" }
    ]
}

并且我需要List<String>张看起来像这样的图像

[
    "http://example.com/image1",
    "http://example.com/image2",
    "http://example.com/image3"
]

我当前的代码如下

List<String> images = [];
if( map['images'] is List<dynamic> ) {
    map['images'].forEach((v) {
        if (null != v['url'])
            images.add(v['url']);
    });
}

它很好用,但是我很好奇是否有一种单线可以以一种简洁(且错误安全)的方式完成相同的事情?

2 个答案:

答案 0 :(得分:3)

var list = map['images'].map((innerMap) => innerMap['url']).toList()

答案 1 :(得分:1)

我想您正在寻找这样的东西:

var images = map['images'].where((m) => m['url'] != null).map((value) => value['url']).toList();

首先,我们从map中选择所有不包含null的{​​{1}}字段的项目。然后,我们将这些url值映射到新的url