Я работаю над проектом 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;
});
Но не знаю, как исправить. кто-нибудь может мне помочь?