first commit

This commit is contained in:
saritabirare 2024-09-06 16:02:26 +05:30
parent 215877afc4
commit 50b0828726
3 changed files with 70 additions and 2 deletions

View File

@ -0,0 +1,68 @@
import 'package:get/get.dart';
import '../models/product_model.dart';
import 'package:collection/collection.dart';
import '../models/product_model1.dart';
class CartController extends GetxController {
var cartList = <Product>[].obs;
var cartCount = 0.obs;
var totalPrice = 0.0.obs;
var subtotal = 0.0.obs;
var gstTotal = 0.0.obs;
var grandTotal = 0.0.obs;
// Add item to cart
void addToCart(Product product) {
var existingProduct = cartList.firstWhereOrNull((p) => p.id == product.id);
if (existingProduct != null) {
// Update quantity if already in cart
existingProduct.quantity++;
} else {
// Add new product to cart
cartList.add(product);
}
cartCount.value = cartList.length;
updateTotalPrice();
}
void updateTotalPrice() {
double subTotal = 0.0;
double gstTotalAmount = 0.0;
for (var product in cartList) {
subTotal += product.price * product.quantity;
gstTotalAmount += (product.price * product.quantity * (product.gst / 100));
}
subtotal.value = subTotal;
gstTotal.value = gstTotalAmount;
grandTotal.value = subtotal.value + gstTotal.value;
}
// Increase the quantity of a product
void increaseQuantity(Product product) {
final index = cartList.indexWhere((item) => item.id == product.id);
if (index != -1) {
cartList[index].quantity++;
updateTotalPrice();
}
}
// Decrease the quantity of a product
void decreaseQuantity(Product product) {
final index = cartList.indexWhere((item) => item.id == product.id);
if (index != -1 && cartList[index].quantity > 1) {
cartList[index].quantity--;
updateTotalPrice();
}
}
// Remove item from cart
void removeFromCart(Product product) {
cartList.removeWhere((item) => item.id == product.id);
cartCount.value = cartList.length;
updateTotalPrice();
}
}

View File

@ -27,7 +27,7 @@ class _CartScreenState extends State<CartScreen> {
void initState() {
super.initState();
if (widget.productModel != null) {
_cartController.addToCart(widget.productModel);
_cartController.addToCart(widget.productModel!);
}
}

View File

@ -187,7 +187,7 @@ class _ProductCardState extends State<ProductCard> {
SizedBox(width: 20.0,),
IconButton(
onPressed: () {
_cartController.removeFromCart(widget.productModel);
_cartController.removeFromCart(widget.productModel!);
},
icon: const Icon(
Icons.delete_outline_rounded,