Dart代码中_resat()函数失效及变量未使用报错问题
问题分析与解决
问题1:未使用局部变量报错
你在_resat()函数的setState块里,用var声明了totalScore和questionId,这会在当前作用域创建新的局部变量,而非修改类的成员变量。这些局部变量没有被任何代码调用,因此触发了未使用变量的警告。
问题2:重置按钮不生效
根源和第一个问题一致:你修改的是setState内部的局部变量,不是类的成员变量totalScore和questionId。setState只会更新依赖成员变量的UI,局部变量的修改既不会触发UI刷新,也无法重置测验状态。
修正方案
去掉setState内部变量声明的var,直接赋值给类的成员变量:
void _resat() { setState(() { totalScore = 0; // 去掉var,直接修改成员变量 questionId = 0; }); }
修正后,setState会正确更新成员变量并触发UI刷新,既解决了未使用变量的警告,也能让重置按钮正常工作。
额外补充一个细节:你的changeVaprosik方法里,修改questionId后判断长度的逻辑存在异步问题,setState是异步更新状态的,建议把判断逻辑放到setState内部,确保使用更新后的questionId:
void changeVaprosik(int score) { totalScore += score; setState(() { questionId += 1; if (questionId < questions.length) { print('还有剩余题目'); } }); }
内容的提问来源于stack exchange,提问作者Eliza_K
相关产品推荐
相关产品推荐

