login-page/lib/services/cart_service.dart
2025-05-17 11:13:16 +03:00

50 lines
1.3 KiB
Dart

import 'package:flutter/foundation.dart';
import '../models/product_model.dart';
import '../models/cart_item_model.dart';
class CartService extends ChangeNotifier {
static final CartService _instance = CartService._internal();
factory CartService() => _instance;
CartService._internal();
final List<CartItem> _items = [];
List<CartItem> get items => List.unmodifiable(_items);
int get itemCount => _items.fold(0, (sum, item) => sum + item.quantity);
int get uniqueItemCount => _items.length;
double get totalPrice => _items.fold(0.0, (sum, item) => sum + item.subtotal);
void addItem(Product product) {
final index = _items.indexWhere((item) => item.product.id == product.id);
if (index != -1) {
_items[index].quantity++;
} else {
_items.add(CartItem(product: product, quantity: 1));
}
notifyListeners();
}
void removeItem(String productId) {
final index = _items.indexWhere((item) => item.product.id == productId);
if (index != -1) {
if (_items[index].quantity > 1) {
_items[index].quantity--;
} else {
_items.removeAt(index);
}
notifyListeners();
}
}
void removeAllOfProduct(String productId) {
_items.removeWhere((item) => item.product.id == productId);
notifyListeners();
}
void clearCart() {
_items.clear();
notifyListeners();
}
}