Flutter如何从Map组成的List中提取所有word字段值生成新列表
实现方案
错误原因
你之前的写法不生效是因为 englishFrequencyWordList 是List集合类型,本身没有定义word属性,只有集合内存储的每一个Map元素才持有word对应的键值,需要遍历每个元素逐个取值后汇总为新列表。
最优实现(Dart内置迭代方法)
直接调用List的map方法完成遍历转换,最后调用toList()转为List类型即可:
List<String> newWordList = englishFrequencyWordList.map((mapItem) => mapItem['word'] as String).toList();
如果需要兼容空安全、避免部分Map不存在word键导致的类型转换异常,可以调整为:
List<String> newWordList = englishFrequencyWordList.map((mapItem) => mapItem['word']?.toString() ?? '').toList();
基础循环实现(易理解版本)
如果不习惯函数式写法,可以用普通for-in循环实现,逻辑更直观:
List<String> newWordList = []; for (var mapItem in englishFrequencyWordList) { newWordList.add(mapItem['word'] as String); }
以上两种方式最终得到的newWordList就是你需要的['test5', 'test3', 'test2', 'test4', 'test1']结果。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

