diff --git a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart index 70858fa9..593a8660 100644 --- a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart +++ b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart @@ -128,7 +128,7 @@ class _CartOrderPageState extends State { GifLoaderDialogUtils.hideDialog( context); }); - })) + },model: model,),) ], ), ), diff --git a/lib/pages/pharmacies/widgets/ProductOrderItem.dart b/lib/pages/pharmacies/widgets/ProductOrderItem.dart index 11976175..4301f3cf 100644 --- a/lib/pages/pharmacies/widgets/ProductOrderItem.dart +++ b/lib/pages/pharmacies/widgets/ProductOrderItem.dart @@ -1,4 +1,6 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCart.dart'; +import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; @@ -11,8 +13,10 @@ class ProductOrderItem extends StatefulWidget { final ShoppingCart item; final VoidCallback changeCartItems; final VoidCallback deleteCartItems; + final OrderPreviewViewModel model; - ProductOrderItem(this.item, this.changeCartItems, this.deleteCartItems); + ProductOrderItem(this.item, this.changeCartItems, this.deleteCartItems, + {this.model}); @override _ProductOrderItemState createState() => _ProductOrderItemState(); @@ -40,7 +44,8 @@ class _ProductOrderItemState extends State { leading: InkWell( onTap: () => {widget.deleteCartItems()}, child: Icon( - FontAwesomeIcons.trashAlt,size: 15, + FontAwesomeIcons.trashAlt, + size: 15, color: Colors.grey.shade700, ), ), @@ -50,17 +55,18 @@ class _ProductOrderItemState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ - (widget.item.product.images != null && widget.item.product.images.length > 0) + (widget.item.product.images != null && + widget.item.product.images.length > 0) ? Image.network( - widget.item.product.images[0].src, - fit: BoxFit.cover, - height: 80, - ) + widget.item.product.images[0].src, + fit: BoxFit.cover, + height: 80, + ) : Image.asset( - "assets/images/no_image.png", - fit: BoxFit.cover, - height: 80, - ), + "assets/images/no_image.png", + fit: BoxFit.cover, + height: 80, + ), Expanded( child: Container( margin: @@ -101,7 +107,9 @@ class _ProductOrderItemState extends State { width: 25, height: 25, child: Icon( - Icons.remove, color: Colors.grey.shade400, size: 20, + Icons.remove, + color: Colors.grey.shade400, + size: 20, ), decoration: BoxDecoration( border: Border.all( @@ -129,7 +137,8 @@ class _ProductOrderItemState extends State { if (value == null) { widget.item.quantity = 0; } else { - widget.item.quantity = int.parse(text); + widget.item.quantity = + int.parse(text); } _totalPrice = "${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}"; @@ -144,7 +153,9 @@ class _ProductOrderItemState extends State { width: 25, height: 25, child: Icon( - Icons.add, color: Colors.grey.shade400, size: 20, + Icons.add, + color: Colors.grey.shade400, + size: 20, ), decoration: BoxDecoration( border: Border.all( @@ -169,21 +180,21 @@ class _ProductOrderItemState extends State { fontSize: 12, fontWeight: FontWeight.bold, ), - widget.item.product.stockQuantity == 0 ? - Texts( - projectProvider.isArabic - ? widget.item.product.stockAvailabilityn - : widget.item.product.stockAvailability, - fontWeight: FontWeight.normal, - fontSize: 13, - color:Colors.red, - - ): Texts(""), + widget.item.product.stockQuantity == 0 + ? Texts( + projectProvider.isArabic + ? widget.item.product + .stockAvailabilityn + : widget.item.product + .stockAvailability, + fontWeight: FontWeight.normal, + fontSize: 13, + color: Colors.red, + ) + : Texts(""), ], ), ), - - ], ), ) @@ -209,7 +220,7 @@ class _ProductOrderItemState extends State { _quantityOnChangeClick(Operation operation) { int newValue = 0; - setState(() { + setState(() async { switch (operation) { case Operation.inc: { @@ -230,14 +241,20 @@ class _ProductOrderItemState extends State { } if (newValue > 0) { widget.item.quantity = newValue; - _quantityController.text = "${widget.item.quantity}"; - _totalPrice = - "${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}"; + await widget.changeCartItems(); + if (widget.model.state == ViewState.ErrorLocal) { + if (operation == Operation.dec) { + newValue = widget.item.quantity + 1; + } else { + newValue = widget.item.quantity - 1; + } + } else { + _quantityController.text = "${widget.item.quantity}"; + _totalPrice = + "${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}"; + } } }); - if (newValue > 0) { - widget.changeCartItems(); - } } @override