You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:27:22