如何在Flutter中的对象列表中修复RangeError?

时间:2019-05-21 18:32:39

标签: dart flutter

我正在尝试在我的应用程序中列出对象。至少到目前为止,我已经从Firestore收集了一些数据,而其他数据则是模拟数据。我创建了一个方法,并使用For循环尝试用生成的Objects填充List。 我不断收到错误“ RangeError(索引):无效值:有效值范围为空:1”。

我尝试了什么? -首先,我认为这可能是Firestore Data的问题,可能在分配时还没有准备好,所以我创建了虚假变量来填充对象。没有工作。 -我以为它可能与For循环有关,我注释掉了但没有解决任何问题。 -在某处读取[index]变量可能是问题,因此我在List [value]中放置了一个数字,并且错误从“ ..is empty:1”更改为“ ..is empty:X” X = number I放在那里。

class comida{
Comida(this.name, this.descripcion,this.likes)

String name, descripcion;
int likes;}

---------------------------------------------------------------

creacionMenu(Map<dynamic,dynamic>name, 
Map<dynamic,dynamic>descripcion, 
Map<dynamic,dynamic>likes){

List<Comida> menu;
for (var i = 1; i < likes.length; i++) {
menu[i]=Comida(name['$i'], descripcion['$i'], likes['$i']);
}
return menu;
}

那是我代码的非常简化的版本。我知道我的错误一定是我尝试声明List或分配值的方式。但是找不到解决方法。 任何帮助都非常准确。

1 个答案:

答案 0 :(得分:1)

这是因为您在menu中写了一个从索引1开始的值,但是List必须从0开始。

优选使用menu.add()或将Map<int, Comida>用作menu