我在Flutter中使用了一个很长的列表。所有的项目都渲染得很好,但我也收到了以下错误:
RangeError (index): Invalid value: Not in range 0..2, inclusive: 3
下面是我的代码:
@override
Widget build(BuildContext context) {
return Container(
child: getList(),
);
}
下面是我的getList()
方法:
Widget getList (){
List<String> list = getListItems();
ListView myList = new ListView.builder(itemBuilder: (context, index){
return new ListTile(
title: new Text(list[index]),
);
});
return myList;
}
下面是我的getListItem()
方法:
List<String> getListItems(){
return ["Faizan", "Usman", "Naouman"];
}
以下是错误的屏幕截图:
9条答案
按热度按时间eit6fx6z1#
您应该将
itemCount
参数传递给ListView.builder
,以允许它知道项目计数ztyzrc3y2#
如果迭代数组时用完所有值,则会发生此错误。如果
ListView
组件缺少itemCount属性,则该组件会尝试继续迭代,但不知道何时完成,因此它最终会在超出范围(数组长度)时继续。在运行设置不佳的
for loop
后,您也可能会看到此错误。这个dart代码也会导致一个范围错误。数组有3个元素,但是我们尝试迭代了4次。
0mkxixxg3#
在我的例子中,我的
itemCount:list.lenght
参数是正确的,但是在我的listTile中的某个地方,我使用了错误的list.indexWhere()
函数参数。当我修复函数时,错误消失了。olqngx594#
如果使用
StreamBuilder
,则必须使用以下代码行:okxuctiv5#
如果您使用
substring
且没有正确设置条件,那么您将得到一个错误kmb7vmvb6#
这主要发生在你使用错误的索引值从列表中获取数据的时候。在我的例子中,我也犯了同样的错误。
mctunoxg7#
Listview.Builder包含itemcount属性。您可以尝试执行以下操作:
flseospp8#
在java中,此类型错误调用indexoutofboundsexception,但在dart情况下,您会得到如下错误
但您必须写入此时间的
int lastElement = myList[myList.length];
瞬间**int lastElement = myList[myList.length - 1];
**例如
4dbbbstv9#