flutter实现填空题答题切换,当前一个题答完后将清空后一个题目的输入框,以免同步答案,当点击上一题时,如果此题已作答那么将答案填入对应的题目中,当前一题未作答时点击上一题就会报错Not in inclusive range 0..2: 3
时间: 2024-04-15 10:27:55 浏览: 103
flutter实现输入框撤销、重写功能
要解决报错"Not in inclusive range 0..2: 3",你需要在点击上一题按钮之前,先检查当前题目索引是否大于0以及前一题是否已经作答。如果前一题已作答,将答案填充到对应的题目中;如果前一题未作答,不进行任何操作。
以下是修改后的代码示例:
```dart
Column(
children: [
Text(questions[currentQuestionIndex].question),
TextField(
onChanged: (value) {
questions[currentQuestionIndex].answer = value;
},
controller: TextEditingController(text: questions[currentQuestionIndex].answer),
),
RaisedButton(
onPressed: () {
if (currentQuestionIndex > 0) {
setState(() {
currentQuestionIndex--;
if (questions[currentQuestionIndex].answer.isNotEmpty) {
questions[currentQuestionIndex + 1].answer = questions[currentQuestionIndex].answer;
}
});
}
},
child: Text('Previous Question'),
),
RaisedButton(
onPressed: () {
setState(() {
currentQuestionIndex++;
if (currentQuestionIndex < questions.length && questions[currentQuestionIndex].answer.isEmpty) {
questions[currentQuestionIndex].answer = '';
}
});
},
child: Text('Next Question'),
),
],
),
```
使用上述代码,当点击上一题按钮时,如果当前题目索引大于0且前一题已经作答,会将答案填入对应的题目中。当点击下一题按钮时,会将当前题目索引加1,并将下一题的答案输入框清空(如果下一题尚未作答)。
这样修改后,就不会出现超出索引范围的错误了。
希望对你有帮助!如有其他问题,请随时提问。
阅读全文