【发布时间】:2020-12-03 20:35:08
【问题描述】:
我遇到了一个问题,我希望字符串显示在 ListTile onPressed 上。在这里,我有一个函数,它使用随机 Uuid 字符串将项目添加到“购物车”屏幕,因此每个 ListTile 都是唯一的,它工作正常,但在那里显示一个丑陋的字符串,如下图所示。
addCartItem(String item) {
item = item + " " + Uuid().v4();
_cartItems.add(item);
notifyListeners();
}
这是一个函数,它将该项目的字符串作为列表图块添加到 ListView,正如我提到的 Uuid 在那里,所以每个项目都是唯一的。
onPressed: () =>
model.addCartItem(
"${food.name}),
这是添加项目的外观,注意丑陋的 Uuid 字符串,但这是必要的,因为每个项目必须是唯一的,否则我会收到重复字符串错误,因为我想将相同的项目添加到 ListTile,并且想要它要显示如下两次或多次单击上面的按钮功能。
问题
我想要摆脱丑陋的 Uuid,我尝试使用自定义计数器函数来代替 Uuid,在每次单击时,都会为同一项目的字符串 +1 添加一个增量,如下面:
add(number) {
number++;
return number;
}
addCartItem(String item) {
item = item + " " + add(0).toString();
_cartItems.add(item);
notifyListeners();
}
问题是由于某种原因这不起作用,我想要的是代替图像中的 Uuid 字符串,它只是一个数字,会增加它被点击的次数,所以 1, 1 +1、2+1 等,就像我制作的函数一样。它不起作用,并且给了我 Duplicate Strings 错误。我想保持代码不变,而不是将其更改为接受这样的字符串以外的任何内容。
为什么 Uuid 可以工作而 number 函数不可以,它应该也可以工作,因为字符串在技术上是不一样的,它有 1 个不同的数字。
【问题讨论】:
-
你仍然以相同的字符串结束,因为你每次都将 0 传递给
add。 -
如果我添加'1'而不是'0',我不确定我在那里做错了什么。
-
类中是否有一个名为
number的实例变量? -
我已经尝试了很多方法来解决它,对于这样一个看似简单的问题,这里有一个更深入的解释它的帖子:stackoverflow.com/questions/65112068/…