runable
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user