I am using a long list in Flutter. All the items are rendering fine but I also receive the following error:
RangeError (index): Invalid value: Not in range 0..2, inclusive: 3
The following is my code:
@override
Widget build(BuildContext context) {
return Container(
child: getList(),
);
}
The following is my getList()
method:
Widget getList (){
List<String> list = getListItems();
ListView myList = new ListView.builder(itemBuilder: (context, index){
return new ListTile(
title: new Text(list[index]),
);
});
return myList;
}
And the following is my getListItem()
method:
List<String> getListItems(){
return ["Faizan", "Usman", "Naouman"];
}
the following is the screenshot of error:
You should pass the itemCount
parameter to the ListView.builder
to allow it to know the item count
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;
}
This error occurs when you run out of values when iterating over an array. In the case of the ListView
component missing the itemCount prop, the component attempts to continue to iterate but is unaware when to complete so it eventually continues on out of range (the length of the array).
You could also see this error after running a poorly set up for loop
. For example:
var arr = [1, 2, 3];
for (var i=0; i < 4; i++) {
print(arr[i]);
}
This dart code would result in a range error as well. The array has 3 items yet we attempt to iterate 4 times.
In my case, my itemCount:list.lenght
parameter was fine but somewhere in my listTile,
I used wrong parameter for list.indexWhere()
function .When I fix function, error was gone.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With