我使用Listview.builder来构建一个按钮列表,该列表基于包含在变更通知程序中的列表中的信息。以下是列表中包含的项目的示例:
ListItem(cost1: 2, cost2: 0, canSelect: 1, timesChosen: 0, name: 'Item 1'),
下面是listview.builder中构建的对象(button)的示例:
ListView.builder(
itemBuilder: (context, index) {
return InkWell(
onTap: () {
context.read<MyProvider>().MyList[index].timesChosen++;
},
child: EquipmentButton(
text: context.read<MyProvider>().MyList[index].name,
Cost1: '${context.read<MyProvider>().MyList[index].cost1}',
timesChosen: '${context.read<MyProvider>().MyList[index].timesChosen}',
),
);
},
itemCount: context.read<MyProvider>().MyList.length),
当我运行这段代码时,它正确地构建了按钮。但是当一个按钮被按下时,我会得到下面的错误:类“ListItem”没有示例setter“timesChosen =”。Receiver:'ListItem'的示例已尝试调用:timesChosen=1
如何让它增加列表中timesChosen的值?
非常感谢
2条答案
按热度按时间7y4bm7vi1#
这里的问题是,您试图使用timesChosen++表达式更新ListItem示例的timesChosen属性,该表达式假定存在该属性的setter。要使代码正常工作,应确保ListItem类具有timesChosen属性的setter方法。下面是setter的一个例子:
上面的代码片段应该可以与listview中的代码一起使用。
qyyhg6bp2#
想明白了我只需要在Listitem类中添加一个void函数。