flutter实现填空题切换,将已作答的题目的信息和选项存储起来,并在切换上下题时如已作答就将答案填入对应的题目中,如果没有就不做操作,为什么在不作答题目时在切换到上一题会报错Not in inclusive range 0..1: 2
时间: 2024-04-15 07:28:29 浏览: 184
报错"Not in inclusive range 0..1: 2"是因为在切换到上一题时,题目索引超出了合法范围。这个问题可以通过在点击上一题按钮之前,先判断当前题目索引是否大于0来解决。
在点击上一题按钮时,可以先检查当前题目索引是否大于0。如果大于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,并将下一题的答案输入框清空(如果下一题尚未作答)。
这样修改后,就不会出现超出索引范围的错误了。
希望对你有帮助!如有其他问题,请随时提问。
阅读全文