Flutter中如何从嵌套列表提取URL值并存入新字符串列表
Flutter嵌套列表提取所有URL到List
方案一:普通循环实现(直观易读)
逐层级遍历嵌套结构,提取目标字段,适合新手理解:
const List series = [ { "title": "The Moth", "publisher": "THE MOTH", "cover":"imgurl", "seriesurllists": [ {"title": "book 1", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, {"title": "book 2", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, {"title": "book 3", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, ] }, ]; List<String> allAudio = []; // 遍历外层series列表 for (var seriesItem in series) { // 获取当前series项中的子列表seriesurllists List<dynamic> urlItems = seriesItem['seriesurllists']; // 遍历子列表提取每个url for (var item in urlItems) { String? url = item['url']; // 非空判断,避免null值加入列表 if (url != null) { allAudio.add(url); } } }
方案二:高阶函数实现(简洁高效)
利用Dart的expand和map方法扁平化嵌套结构,一行代码完成提取:
const List series = [ { "title": "The Moth", "publisher": "THE MOTH", "cover":"imgurl", "seriesurllists": [ {"title": "book 1", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, {"title": "book 2", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, {"title": "book 3", "url":"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"}, ] }, ]; // 扁平化嵌套列表并提取url,同时过滤空值 List<String> allAudio = series .expand((item) => item['seriesurllists'] as List) .map((urlItem) => urlItem['url']) .whereType<String>() .toList();
两种方案最终都会生成你需要的List<String>类型allAudio列表,包含所有提取出的URL。
内容的提问来源于stack exchange,提问作者Digamber negi
相关产品推荐
相关产品推荐

