This commit is contained in:
Phuoc Nguyen
2025-10-10 16:38:07 +07:00
parent e5b247d622
commit b94c158004
177 changed files with 25080 additions and 152 deletions

View File

@@ -0,0 +1,53 @@
import 'package:hive_ce/hive.dart';
import '../models/cart_item_model.dart';
/// Cart local data source using Hive
abstract class CartLocalDataSource {
Future<List<CartItemModel>> getCartItems();
Future<void> addToCart(CartItemModel item);
Future<void> updateQuantity(String productId, int quantity);
Future<void> removeFromCart(String productId);
Future<void> clearCart();
}
class CartLocalDataSourceImpl implements CartLocalDataSource {
final Box<CartItemModel> box;
CartLocalDataSourceImpl(this.box);
@override
Future<List<CartItemModel>> getCartItems() async {
return box.values.toList();
}
@override
Future<void> addToCart(CartItemModel item) async {
await box.put(item.productId, item);
}
@override
Future<void> updateQuantity(String productId, int quantity) async {
final item = box.get(productId);
if (item != null) {
final updated = CartItemModel(
productId: item.productId,
productName: item.productName,
price: item.price,
quantity: quantity,
imageUrl: item.imageUrl,
addedAt: item.addedAt,
);
await box.put(productId, updated);
}
}
@override
Future<void> removeFromCart(String productId) async {
await box.delete(productId);
}
@override
Future<void> clearCart() async {
await box.clear();
}
}