Flutter使用ListView时用index+1触发RangeError索引越界如何解决
报错原因
Dart中列表下标从0开始计数,你创建的items列表长度为115,合法下标范围为0..114。ListView的itemCount设置为items.length(即115),因此itemBuilder回调的index参数取值范围为0..114。当index取最大值114时,index+1结果为115,超出列表合法下标范围,触发范围错误。
错误逻辑说明
你混淆了「列表元素访问下标」和「前端展示序号」两个概念:
- 列表元素访问必须使用原始
index,才能对应到列表中正确的元素 - 展示序号从1开始的需求,只需要在渲染文本时对序号做+1处理,不需要修改列表访问的下标
正确修改方案
将触发错误的代码行修改为如下内容即可:
title: Text('${index + 1}:${items[index]}'),
如果需要保留原items里的文本前缀,只修改展示序号,也可以调整列表生成逻辑:
final items = List<String>.generate(115, (i) => "index ${i + 1}");
后续直接用items[index]访问即可正常展示从1开始的序号。
内容的提问来源于stack exchange,提问作者Mike Osborn
相关产品推荐
相关产品推荐

