如何为每个动态列表小部件赋予不同的值?

时间:2019-03-20 05:10:56

标签: dart flutter

我有一个基于后端的项目计数的自定义小部件循环,例如:

 _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,但是我想听听一些建议或更好的方法。谢谢!

1 个答案:

答案 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,但反之则不正确。