Flutter开发求助:List<dynamic>无法赋值给List<Widget>报错
问题
开发答题应用时,尝试用Row组件展示包含图标的答题结果列表,出现错误:
The argument type 'List
相关代码:
class exampage extends StatefulWidget { const exampage({Key? key}) : super(key: key); @override State<exampage> createState() => _exampageState(); } class _exampageState extends State<exampage> { List answerResult = [ Padding( padding: const EdgeInsets.all(3.0), child: Icon( Icons.check, color: Color.fromARGB(255, 27, 135, 76), ), ), Padding( padding: const EdgeInsets.all(3.0), child: Icon( Icons.close, color: Color.fromARGB(255, 223, 84, 75), ), ), ]; @override Widget build(BuildContext context) { return Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Row( children: answerResult, ), ]); } }
问题原因
你声明answerResult时未指定泛型类型,仅写了List answerResult = [...],Dart会默认将其推断为List<dynamic>类型。但Row组件的children参数要求必须是List<Widget>类型,动态列表和Widget列表类型不兼容,因此触发了类型不匹配的错误。
解决方法
给answerResult明确指定泛型为Widget,修改后的声明代码如下:
List<Widget> answerResult = [ Padding( padding: const EdgeInsets.all(3.0), child: Icon( Icons.check, color: Color.fromARGB(255, 27, 135, 76), ), ), Padding( padding: const EdgeInsets.all(3.0), child: Icon( Icons.close, color: Color.fromARGB(255, 223, 84, 75), ), ), ];
这样Dart就能识别该列表为Widget类型列表,与Row的children参数类型匹配,错误即可解决。
内容的提问来源于stack exchange,提问作者Balkis
相关产品推荐
相关产品推荐

