【问题标题】:Replacing Uuid with Custom Counter Function in FlutterFlutter中用自定义计数器函数替换Uuid
【发布时间】: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/…

标签: flutter dart


【解决方案1】:

试试这个:

var number = 0;

addCartItem(String item) {
  item = item + " " + add(++number).toString();
  _cartItems.add(item);
  notifyListeners();
}

【讨论】:

  • 如果您只寻找每个项目类型的倍数来增加该项目类型的数字,您将必须提供一个非常强大的解决方案,跟踪变量中的每个数字,或者检查看看每次是否有名字冲突,然后在addCartItem方法中增加一个数字。
  • 嗯,我一直有这个问题,因为看似一个简单的问题。我在主代码中添加了我得到的错误,我发布了一张图片。
  • 基本上我想要的是每次按下按钮时数字都会增加,所以字符串不一样,只是数字改变了,所以我没有得到“重复字符串”错误。
【解决方案2】:

实际上,我现在只是通过将 .substring 方法直接添加到 'cart' 中的 ListTile 来“修复”它。这不是最优雅的解决方案,但它确实有效。

它只是从视图中删除 Uuid 代码(36 个字母和数字):

title: Text(e.substring(0, e.length - 36),

【讨论】:

    猜你喜欢
    • 2018-06-02
    • 2016-07-08
    • 2020-07-19
    • 1970-01-01
    • 2019-07-21
    • 2014-01-11
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多