Flutter map转List后报错List<Set<Card>>无法赋值给List<Widget>求助
问题原因
- 核心是Dart的箭头函数语法使用错误导致返回值类型不符合预期
- 你在
=>后面直接加了大括号,Dart会将该结构识别为Set类型字面量,而非函数体块。这意味着每次map遍历返回的不是Card组件,而是一个只包含单个Card元素的Set<Card>,最终调用toList()后得到的类型是List<Set<Card>>,和Column的children参数要求的List<Widget>类型不匹配,所以触发报错。
修复方案
有两种正确的写法可选:
方案1:保留箭头函数(适合单行返回逻辑)
去掉=>后的大括号和return关键字,箭头函数默认会将后面的表达式结果作为返回值:
transactions.map( (e) => Card(child: Text(e.title),) ).toList()
方案2:使用函数体块写法(适合多行逻辑)
如果你需要在遍历内部写多行处理逻辑,直接去掉箭头=>即可,大括号会被识别为函数体:
transactions.map( (e) { // 这里可以添加其他处理逻辑 return Card(child: Text(e.title),); } ).toList()
内容的提问来源于stack exchange,提问作者mbnoimi
相关产品推荐
相关产品推荐

