我有一个基于后端的项目计数的自定义小部件循环,例如:
_showPerItem(Item items) {
List<Widget> unitItems = <Widget>[];
for (var i = 0; i < items.data.length; i++) {
unitItems.add(
MenuList(
menuName: '${items.data[i].name}',
menuDescription: '${items.data[i].description}',
price: 'Rp. ${items.data[i].price}',
onPressed: () {
widget.showModal(items.data[i]);
},
),
);
}
然后我想要MenuList具有可以添加或删除的整数,就像fodd ordering app一样。因此,每个商品都有不同的商品计数值。
我尝试使用bloc,但只认为已更改的单个值。也许我可以使用Map,但是我想听听一些建议或更好的方法。谢谢!
答案 0 :(得分:2)
为此,您可以在所有对象上使用dart的hasCode属性。在模型中添加一个名为hashCode的属性,然后从那里返回值的哈希值。您可以使用Quiver来获取哈希帮助器功能,如下所示。
int get hashCode => hash2(menuName.hashCode, price.hasCode);
然后,hashCode将是唯一的。如果愿意,还可以在其中添加其他附加值,而只需使用hash3,4等。
使用以下命令将颤动导入模型中
import 'package:quiver/core.dart';
更新:基于下面的@RandalSchwartz评论,我想提及的是,您应该使用在获得hashCode时不太可能相同的属性组合。
“ hashCode不能保证为每个对象返回唯一值。如果两个对象”等于“,则它们必须具有相同的hashCode,但反之则不正确。”