When I add the same item to the cart, the quantity on the cart badge does not increase. How can I increase the number, even when adding the same product. It only changes when I add a different product.
Cart provider
import 'package:flutter/foundation.dart';
class CartItem {
final String id;
final String title;
final int quantity;
final double price;
CartItem({
required this.id,
required this.title,
required this.quantity,
required this.price,
});
}
class Cart with ChangeNotifier {
Map<String, CartItem> _items = {};
Map<String, CartItem> get items {
return {..._items};
}
int get itemCount {
return _items.length;
}
Badge
Consumer<Cart>(
builder: (_, cart, ch) => Badge(
child: ch!,
value: cart.itemCount.toString(),
color: Colors.red,
),
CodePudding user response:
You can add this getter to your Cart class.
int get totalItems {
return items.values.fold<int>(0, (currentValue, cartItem) {
return currentValue = cartItem.quantity;
});
}
Or you can add one more field in your
Cartclass asitemCount. In that case, you have to update the value ofitemCountproperty every time adding something to thecart.
Also, check my github repo for help.
