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 d31320ef..c50399f8 100644 --- a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart +++ b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart @@ -91,46 +91,47 @@ class _CartOrderPageState extends State { endIndent: 0, ), Container( - child: Column( - children: [ - ...List.generate( - model.cartResponse.shoppingCarts != null - ? model.cartResponse.shoppingCarts.length - : 0, - (index) => ProductOrderItem( - model.cartResponse - .shoppingCarts[index], () async { - GifLoaderDialogUtils.showMyDialog( - context); - await model.changeProductQuantity(model - .cartResponse.shoppingCarts[index]); - if (model.state != ViewState.Error) { - // appScaffold.appBar.badgeUpdater( - // '${value.quantityCount ?? 0}'); - } - if (model.state == - ViewState.ErrorLocal) { - Utils.showErrorToast(model.error); - } - GifLoaderDialogUtils.hideDialog( - context); - }, () async { - GifLoaderDialogUtils.showMyDialog( - context); - await model - .deleteProduct(model.cartResponse - .shoppingCarts[index]) - .then((value) { - if (model.state == - ViewState.ErrorLocal) { - Utils.showErrorToast(model.error); - } - GifLoaderDialogUtils.hideDialog( - context); - }); - }, model)) - ], - ), + child: ListView.builder( + itemCount: + model.cartResponse.shoppingCarts.length, + scrollDirection: Axis.vertical, + shrinkWrap: true, + physics: const AlwaysScrollableScrollPhysics (), + itemBuilder: (context, index) { + return ProductOrderItem( + item:model.cartResponse + .shoppingCarts[index], + changeCartItems:() async { + GifLoaderDialogUtils.showMyDialog( + context); + await model.changeProductQuantity(model + .cartResponse.shoppingCarts[index]); + if (model.state != ViewState.Error) { + } + if (model.state == + ViewState.ErrorLocal) { + Utils.showErrorToast(model.error); + } + GifLoaderDialogUtils.hideDialog( + context); + }, + + deleteCartItems:() async { + GifLoaderDialogUtils.showMyDialog( + context); + await model + .deleteProduct(model.cartResponse + .shoppingCarts[index]) + .then((value) { + if (model.state == + ViewState.ErrorLocal) { + Utils.showErrorToast(model.error); + } + GifLoaderDialogUtils.hideDialog( + context); + }); + },model: model,); + }), ), const Divider( color: Color(0xFFD6D6D6), diff --git a/lib/pages/pharmacies/widgets/ProductOrderItem.dart b/lib/pages/pharmacies/widgets/ProductOrderItem.dart index e6441fe2..a49c1273 100644 --- a/lib/pages/pharmacies/widgets/ProductOrderItem.dart +++ b/lib/pages/pharmacies/widgets/ProductOrderItem.dart @@ -3,7 +3,6 @@ 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/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -16,8 +15,8 @@ class ProductOrderItem extends StatefulWidget { final VoidCallback deleteCartItems; final OrderPreviewViewModel model; - ProductOrderItem( - this.item, this.changeCartItems, this.deleteCartItems, this.model); + ProductOrderItem({this.item, this.changeCartItems, this.deleteCartItems, + this.model}); @override _ProductOrderItemState createState() => _ProductOrderItemState(); @@ -29,14 +28,15 @@ class _ProductOrderItemState extends State { @override void initState() { - _quantityController.text = "${widget.item.quantity}"; - _totalPrice = - "${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}"; + super.initState(); } @override Widget build(BuildContext context) { + _quantityController.text = "${widget.item.quantity}"; + _totalPrice = + "${(widget.item.product.price * widget.item.quantity).toStringAsFixed(2)}"; ProjectViewModel projectProvider = Provider.of(context); return Column( @@ -102,10 +102,8 @@ class _ProductOrderItemState extends State { child: Row( children: [ InkWell( - onTap: () => widget.model.error.isEmpty - ? {_quantityOnChangeClick(Operation.dec)} - : Utils.showErrorToast( - widget.model.error), + onTap: () => + {_quantityOnChangeClick(Operation.dec)}, child: Container( width: 25, height: 25, @@ -150,10 +148,8 @@ class _ProductOrderItemState extends State { )), ), InkWell( - onTap: () => widget.model.error == null - ? {_quantityOnChangeClick(Operation.inc)} - : Utils.showErrorToast( - widget.model.error), + onTap: () => + {_quantityOnChangeClick(Operation.inc)}, child: Container( width: 25, height: 25, @@ -225,8 +221,7 @@ class _ProductOrderItemState extends State { _quantityOnChangeClick(Operation operation) { int newValue = 0; - - setState(() { + setState(() async { switch (operation) { case Operation.inc: { @@ -247,14 +242,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