flutter 如何更新模型中的最终整数值?

bt1cpqcv  于 2023-01-21  发布在  Flutter
关注(0)|答案(2)|浏览(162)

我有这样一个模型:

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;
  );
 }
}

所以,基本上重新分配。

qojgxg4l

qojgxg4l1#

无法更改最终值。请从语句中删除final关键字以使其可更改。final关键字用于对变量的值进行硬编码,以后无法更改,对这些变量执行的任何类型的操作都无法更改其值(状态)

aamkag61

aamkag612#

您可以使用copyWith方法创建具有更新值的新示例

class Model {
 const  Model({
    required this.title,
    required this.amount,
  });

  final String title;
  final int amount;

  Model copyWith({
    String? title,
    int? amount,
  }) {
    return Model(
      title: title ?? this.title,
      amount: amount ?? this.amount,
    );
  }
}

现在,您可以传递要更新的文件,例如model.copyWith(amount: _selectedAmount);

相关问题