Flutter错误:RangeError(索引):无效值:不在0..2范围内(包括3)

Muh*_*zan 14 dart android-studio flutter

我在颤抖中使用了一长串。所有项目都可以正常渲染,但还会出现以下错误:

RangeError (index): Invalid value: Not in range 0..2, inclusive: 3
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

@override
Widget build(BuildContext context) {
return Container(
  child: getList(),
 );
}
Run Code Online (Sandbox Code Playgroud)

以下是我的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;
}
Run Code Online (Sandbox Code Playgroud)

以下是我的getListItem()方法:

List<String> getListItems(){
return ["Faizan", "Usman", "Naouman"];
}
Run Code Online (Sandbox Code Playgroud)

以下是错误的屏幕截图:

在此处输入图片说明

mut*_*amb 26

您应该将itemCount参数传递给,ListView.builder以使其知道项目数

Widget getList() {
  List<String> list = getListItems();
  ListView myList = new ListView.builder(
    itemCount: list.length,
    itemBuilder: (context, index) {
    return new ListTile(
      title: new Text(list[index]),
    );
  });
  return myList;
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这对于 AnimatedList 没有帮助 (3认同)
  • @ElhamKeshavarz 你的评论是错误的并且具有误导性。这是“listview.builder”的官方描述:“此构造函数适用于具有大量(或无限)子级的列表视图,因为仅针对那些实际可见的子级调用构建器。提供非空 itemCount 可以提高 ListView 估计最大滚动范围的能力。 (3认同)
  • 如果我的列表没有固定长度怎么办(例如,无限滚动)? (2认同)
  • @RichardMcFriendOluwamuyiwa Listview.builder用于具有指定长度的列表,如果您不知道长度,则可以使用listview (2认同)
  • 我正在使用 SliverList,但我找不到任何指定 itemCount 的选项:( (2认同)

小智 18

当迭代数组时用完值时,就会出现此错误。如果ListView组件缺少 itemCount 属性,组件会尝试继续迭代,但不知道何时完成,因此最终会超出范围(数组的长度)。

在运行设置不当的for loop. 例如:

var arr = [1, 2, 3];

for (var i=0; i < 4; i++) {
    print(arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

此飞镖代码也会导致范围错误。该数组有 3 个项目,但我们尝试迭代 4 次。


小智 5

如果你使用substringand if 没有正确设置条件那么你会得到一个错误