我有这样一个模型:
Class Model {
Model({required this.title, required this.amount});
final String title;
final int amount;
}
用户可以查看此数据,并可以选择更改金额。当我尝试更改amount
的值时,如list[index].amount = 3
,我得到“'* amount'不能用作setter,因为它是最终的。请尝试查找其他setter,或使'amount'非最终 *”消息。如何更新amount
的值?
现在我使用的是以下解决方法:
for (final model in list) {
if (model.title == _title) {
list[list.indexOf(model)] = Model(
title: model.title,
amount: _selectedAmount;
);
}
}
所以,基本上重新分配。
2条答案
按热度按时间qojgxg4l1#
无法更改最终值。请从语句中删除final关键字以使其可更改。final关键字用于对变量的值进行硬编码,以后无法更改,对这些变量执行的任何类型的操作都无法更改其值(状态)
aamkag612#
您可以使用
copyWith
方法创建具有更新值的新示例现在,您可以传递要更新的文件,例如
model.copyWith(amount: _selectedAmount);