Flutter答题应用完成答题后跳转结果页出现RangeError问题求助
Flutter答题应用答完最后一题跳转报错的解决方案
错误原因
你遇到的RangeError (length): Invalid value: Not in inclusive range 0..5: 6,是因为当前题目索引超出了questions数组的有效索引范围。假设你的questions数组有6个元素,有效索引是0到5,答完最后一题后代码错误地将索引更新为6,此时访问questions[6]就会触发越界错误。
修复步骤
调整跳转逻辑顺序
不要先更新索引再判断是否到达最后一题,应该先判断当前是否是最后一题,再决定跳转结果页还是更新索引:setState(() { if (currentIndex == questions.length - 1) { // 跳转至结果页 Navigator.push(context, MaterialPageRoute(builder: (context) => ResultPage())); } else { currentIndex++; } });检查UI构建中的数组访问
确保在构建题目UI时,只有当currentIndex处于0 <= currentIndex < questions.length范围内时,才访问questions[currentIndex],避免索引越界。修正延迟跳转写法
如果用延迟执行跳转,要确保延迟代码不会错误更新索引:setState(() { if (currentIndex == questions.length - 1) { Future.delayed(const Duration(seconds: 1), () { Navigator.push(context, MaterialPageRoute(builder: (context) => ResultPage())); }); } else { currentIndex++; } });
内容的提问来源于stack exchange,提问作者Silikazi
相关产品推荐
相关产品推荐

