Как создать список <String>из списка> в дартс? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть 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"
]

Мой текущий код выглядит следующим образомthis

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

Это хорошо работает, но мне любопытно, есть ли однострочник, который бы добился того же самого аккуратным (и безопасным от ошибок) способом?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Я думаю, вы ищете что-то вроде этого:

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

Сначала мы выбираем все элементы из map, которые не содержат поля null для url.Затем мы сопоставляем эти url значения с новым List.

0 голосов
/ 11 февраля 2019
var list = map['images'].map((innerMap) => innerMap['url']).toList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...