Flutter报错:List<dynamic>无法赋值给List<Map<String,Object>>类型参数
Flutter拆分Widget类型报错修复方案
报错信息
The argument type 'List
' can't be assigned to the parameter type 'List<Map<String, Object>>'
触发场景
开发Flutter应用时,为提升代码整洁度将逻辑拆分为独立Widget,传参时触发上述类型不匹配错误。
错误原因
main.dart中定义问题列表_questions时,仅声明为final List _questions = const [...],未指定集合的泛型类型,Dart会默认将该列表推断为List<dynamic>动态类型;但接收参数的Quiz组件中,questions入参要求的类型为强类型List<Map<String, Object>>,动态类型集合无法直接赋值给强类型参数,因此抛出错误。
修复步骤
将_questions变量的类型声明补充明确泛型即可,修改对应代码片段:
// 原代码:final List _questions = const [ // 替换为以下带明确泛型的声明 final List<Map<String, Object>> _questions = const [ { 'questionText': 'who\'s your favorite football player? ', 'Answers': ['Cristiano', ' Messi', 'Mbappe', 'Benzema'] }, { 'questionText': 'who\'s your favorite Ping Pong player', 'Answers': [ 'Noshad Alamian', 'Nima Alamian', 'Aria Amiri', 'Matin Lotfollah Nassabi' ] }, { 'questionText': 'what\'s your favorite color', 'Answers': ['Grey', 'Black', 'Green', 'Red'] }, { 'questionText': 'what\'s your favorite football club', 'Answers': ['Real Madrid', 'Barcelona', 'Manchester United', 'Liverpool'] } ];
注意事项
Dart为强类型语言,定义List、Map这类集合类型变量时,建议明确标注泛型类型,既可以避免这类类型不匹配报错,也能让IDE提供更精准的代码补全、错误检查提示。
内容的提问来源于stack exchange,提问作者Pooyanha
相关产品推荐
相关产品推荐

