Flutter测验应用使用map传递分数时报位置参数过多错误如何解决
问题根因
你触发的报错本质是调用了一个无参数的函数,却给它传入了1个参数,结合你给出的代码,90%以上的概率问题出在quiz.dart文件里的answerQuestion函数定义:
- 你当前的
answerQuestion是无参数定义的,格式类似:
void answerQuestion() { // 你原来的逻辑代码 }
- 但你在map循环中调用它时传入了
answer['score']作为参数,因此触发参数不匹配的报错。
解决方案
- 修改
quiz.dart中answerQuestion的函数定义,增加分数参数:
// 增加int类型的score参数 void answerQuestion(int score) { // 你原来的逻辑不变,新增分数统计逻辑即可,例如: // totalScore += score; setState(() { questionIndex++; }); }
- 为了避免类型安全提示,调用时可以显式将
answer['score']、answer['text']转为对应类型:
return Answer(() => answerQuestion(answer['score'] as int), answer['text'] as String);
补充排查路径
如果修改answerQuestion定义后报错仍然存在,请检查Question组件的构造函数定义,确保它声明了接收1个字符串类型的位置参数,和你调用时传入的参数数量匹配。
内容的提问来源于stack exchange,提问作者s3tupw1zard
相关产品推荐
相关产品推荐

