При увеличении количества товара промежуточный итог не увеличивается правильно - PullRequest
0 голосов
/ 20 июня 2020

Я работаю над проектом Flutter. Это приложение для еды. Моя проблема в разделе корзины. если я добавляю более одного продукта в корзину и хочу увеличить количество, например, второго продукта, количество увеличится правильно, но цена нет. Пример:

  • цена товара 1 5 $ добавлена ​​1 шт.
  • цена товара 2 10 $ добавлена ​​1 шт.
  • цена товара 3 5 $ добавлена ​​1 шт.

Итого в корзине 20 $. Если я увеличу продукт 2 на 1, я ожидаю, что общая сумма составит 30 долларов. Но общая сумма увеличивается на 15 $, поэтому в корзине напишите 45 $ (цена товара 2 + цена товара 1). То же самое для третьего продукта при увеличении количества, повышение цены на 25 долларов, а не на 5 долларов, и то же самое при добавлении дополнительных товаров. Кажется, это увеличивает не цену отдельного продукта, а цену всех продуктов: (

Вот код в корзине controller.dart:

void calculateSubtotal() async {
  subTotal = 0;
  carts.forEach((cart) {
    subTotal += cart.food.price;
    cart.extras.forEach((element) {
      subTotal += element.price;
    });
    subTotal *= cart.quantity;
  });
  if (Helper.canDelivery(carts[0].food.restaurant, carts: carts)) {
    deliveryFee = carts[0].food.restaurant.deliveryFee;
  }
  taxAmount =
      (subTotal + deliveryFee) * carts[0].food.restaurant.defaultTax / 100;
  total = subTotal + taxAmount + deliveryFee;
  setState(() {});
}

Здесь секция увеличения:

incrementQuantity(Cart cart) {
  if (cart.quantity <= 99) {
    ++cart.quantity;
    updateCart(cart);
    calculateSubtotal();
  }
}

А вот декремент:

decrementQuantity(Cart cart) {
if (cart.quantity > 1) {
  --cart.quantity;
  updateCart(cart);
  calculateSubtotal();

Я столько раз пробовал здесь, на этой строчке:

});
  subTotal *= cart.quantity;
});

Но не знаю, как исправить. кто-нибудь может мне помочь?

...