gpt4 book ai didi

flutter - 计算 map 值后加减值Flutter

转载 作者:行者123 更新时间:2023-12-03 05:00:01 25 4
gpt4 key购买 nike

我在购物车中使用了一个变量,用于更新总数。当我导航到购物车页面时,所有变量均已正确计算。然后,我允许用户更新购物车中的数量,但是每当我这样做时,似乎都多次计算了该值,并且我不知道该错误在哪里。

最初,我调用此函数以获取总计:

void getCartTotal() {
final cart = CartProvider.of(context);
if (cart.orderDetails != null) {
for (int i = 0; i < cart.orderDetails.length; i++) {
setState(() {
cartTotal +=
(cart.orderDetails[i].price * cart.orderDetails[i].quantity);
});

print('There are ${cart.orderDetails.length} many items in the cart');
minReached(cartTotal);
}
}
}

然后,当更新购物车中的数量时,我使用以下计数器:
      Counter(
color: Colors.white,
textStyle: TextStyle(
fontFamily: 'Poppins',
color: buddiesPurple,
fontSize: screenAwareSize(15, context)),
buttonSize: screenAwareSize(20, context),
minValue: 1,
maxValue: 10,
step: 1,
decimalPlaces: 0,
initialValue: cart.orderDetails[i].quantity,
onChanged: (num val) {
setState(() {
cart.orderDetails[i].quantity = val;
getCartTotal();
});
},
),

但是,每当我尝试更新购物车(增加或减少)时,值都将增加一倍。任何帮助,将不胜感激

最佳答案

我认为您需要先将cartTotal重设为0,然后再遍历所有项目并将其值添加到总计中:

void getCartTotal() {
final cart = CartProvider.of(context);
if (cart.orderDetails != null) {
cartTotal = 0;

for (int i = 0; i < cart.orderDetails.length; i++) {
setState(() {
cartTotal +=
(cart.orderDetails[i].price * cart.orderDetails[i].quantity);
});

print('There are ${cart.orderDetails.length} many items in the cart');
minReached(cartTotal);
}
}
}

看看它说 cartTotal = 0的地方。如果不这样做,则每增加一个计数器, cartToal就会加一倍。

关于flutter - 计算 map 值后加减值Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59699603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com