我試圖檢查用戶從 textFormField 輸入的內容,并使用串列“question_list”中的正確答案進行檢查 在此頁面中,用戶應向 TextFormField 輸入正確的資料。在 for 回圈中,我試圖從字串串列“answer”和串列“questionList”中檢查用戶輸入。setState() 中的 for 回圈給出錯誤
List question = questionList[0]['unit_1'];
return PageView.builder(
itemBuilder: (BuildContext context, int index) {
if (question[index]['type'] == 'text') {
List correct = [];
List<String> answer = [];
for (var i = 0; i <= question[index]['correct_answer'].length; i ) {
correct.insert(i, 0);
}
return Scaffold(
floatingActionButton: new FloatingActionButton(
backgroundColor: Colors.green,
elevation: 0,
child: new Icon(
Icons.check,
size: 30,
),
onPressed: () {
setState(() {
for (int i = 0;
i <= question[0]['correct_answer'].length;
i ) {
if (question[0]['correct_answer'][i] == answer[i]) {
correct.insert(i, 1);
} else {
correct.insert(i, 2);
}
}
});
}),
這就是我通過 TextField 填寫“答案”串列的方式
child: TextFormField(
decoration: InputDecoration(
border: OutlineInputBorder(),
contentPadding: EdgeInsets.zero),
onChanged: (value) {
answer.insert(questionIndex.compareTo(0), value);
print(value);
},
style: new TextStyle(
fontWeight: FontWeight.normal,
color: correct[questionIndex] == 2
? Colors.red
: correct[questionIndex] == 1
? Colors.green
: Colors.black),
)),
這是我從中獲取資料的串列
const List questionList = [
{
'unit_1': [
{
"id": 1,
"type": "text",
"question": [
'Мен м??ал?м',
'Сен о?ушы',
'С?з ана',
'Сен спортшы',
'С?з ?нш?',
'Мен ?ыз',
'Сен Аружан',
'С?з д?р?гер',
],
"correct_answer": [
'м?н',
'сын',
'сыз',
'сын',
'с?з',
'бын',
'сын',
'с?з'
],
},
{
"id": 2,
"type": "scroll",
"question": [
"Мен бала",
"Сен ?ке",
"Ол ?л",
"С?з д?р?гер",
"Сен спортшы",
"Ол ?нш?",
"С?з ата",
"Мен ?ыз",
"Мен ж?г?т",
"Мен ана",
"Мен ?же",
"Мен Айдос",
"Мен ?азиз",
"Мен м??ал?м",
"Сен а?а"
],
"correct_answer": [
"",
"мын",
"м?н",
"бын",
"б?н",
"пын",
"п?н",
"сы?",
"с??",
"сыз",
"с?з",
],
},
這會導致錯誤 RangeError (index): Invalid value: Valid value range is empty: 0
uj5u.com熱心網友回復:
問題是您正在嘗試訪問index比串列本身更大的內容。
出現問題是因為您使用的是 list.length屬性。但是串列的索引是從零開始的(從零開始)
嘗試替換<=for <:
for (int i = 0; i < question[0]['correct_answer'].length; i ) {
if (question[0]['correct_answer'][i] == answer[i]) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339520.html
