Flutter运行报错:Set<Map<String,Object>>类未定义[]运算符如何解决
报错根因
你声明questions变量时使用var让Dart自动推断类型,Dart的类型推断机制误将该变量判定为Set<Map<String, Object>>类型,Set集合不支持下标[]访问元素,因此调用questions[_questionIndex]时触发报错。
修复方案
- 第一步:给
questions变量显式指定类型为List<Map<String, dynamic>>,替换原有var声明即可,修改后代码如下:
// 替换原有var questions = [ 即可,后续集合内容不变 List<Map<String, dynamic>> questions = [ { 'questionText': 'What is your favorate Colour', 'answers': ['red', 'balck ', 'yellow', 'blue'] }, { 'questionText': 'What is your favorate Animal', "answers": ['Lion', 'Chettah ', 'Leopard', 'Cat'] }, { 'questionText': 'What is your favorate Movie', 'answers': ['hai', 'hello ', 'hoe', 'are you'] } ];
- 第二步(可选):如果后续运行还出现String类型不匹配的提示,可将取值代码补充类型转换:
Question( (questions[_questionIndex]['questionText'] as String), ),
其他提示
日志里的签名警告是iOS端的配置问题,本地调试不会影响运行,如果需要打包iOS安装包,打开项目ios/Runner.xcworkspace文件,在Xcode的Runner目标的「Signing & Capabilities」页签选择自己的开发团队即可解决。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

