From 3dc28d318a85791f23806eeb2a108e5d9e57f1c2 Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Thu, 7 Oct 2021 10:16:45 +0300 Subject: [PATCH] fix bugs on wish list --- lib/config/localized_values.dart | 1 + .../product-details/product-detail.dart | 42 +++++++---- .../shared/product_details_app_bar.dart | 69 +++++++++++-------- lib/uitl/translations_delegate_base.dart | 2 + 4 files changed, 72 insertions(+), 42 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 7d764249..3979e982 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1555,6 +1555,7 @@ const Map localizedValues = { "quantitySize": {"en": "Quantity", "ar": "كميه"}, "addToCart": {"en": "Add to Cart", "ar": "إضف للسلة"}, "addToWishlist": {"en": "Add to Wishlist", "ar": "اضف للمفضلة"}, + "removeFromWishlist": {"en": "Remove From Wishlist", "ar": "احذف للمفضلة"}, "noData": {"en": "There is no data", "ar": "لايوجد بيانات"}, "no_data": {"en": "No data", "ar": "لايوجد بيانات"}, "buyNow": {"en": "buy now", "ar": "إشتري الان"}, diff --git a/lib/pages/pharmacies/screens/product-details/product-detail.dart b/lib/pages/pharmacies/screens/product-details/product-detail.dart index 3ef1758b..6ac5ec25 100644 --- a/lib/pages/pharmacies/screens/product-details/product-detail.dart +++ b/lib/pages/pharmacies/screens/product-details/product-detail.dart @@ -32,7 +32,7 @@ class ProductDetailPage extends StatefulWidget { __ProductDetailPageState createState() => __ProductDetailPageState(); } -class __ProductDetailPageState extends State{ +class __ProductDetailPageState extends State { AppSharedPreferences sharedPref = AppSharedPreferences(); bool isTrue = true; @@ -45,7 +45,6 @@ class __ProductDetailPageState extends State{ bool isInWishList = false; int quantity = 0; - checkWishlist() async { GifLoaderDialogUtils.showMyDialog(context); ProductDetailViewModel model = new ProductDetailViewModel(); @@ -98,10 +97,13 @@ class __ProductDetailPageState extends State{ product: widget.product, quantity: quantity, model: model, - addToWishlistFunction: () { - addToWishlistFunction(itemID:itemID,model:model); - setState(() {}); + addToWishlistFunction: () async { + await addToWishlistFunction(itemID: itemID, model: model); + }, + deleteFromWishlistFunction: () async { + await deleteFromWishlistFunction(itemID: itemID, model: model); }, + isInWishList:isInWishList ), body: SingleChildScrollView( child: Column( @@ -134,15 +136,19 @@ class __ProductDetailPageState extends State{ widget.product, customerId: customerId, addToWishlistFunction: (item) { - addToWishlistFunction(itemID:item,model:model); + addToWishlistFunction(itemID: item, model: model); setState(() {}); }, deleteFromWishlistFunction: (item) { - deleteFromWishlistFunction(itemID: item, model: model); + deleteFromWishlistFunction( + itemID: item, model: model); setState(() {}); }, notifyMeWhenAvailable: (context, itemId) { - notifyMeWhenAvailable(itemId:itemId, customerId: customerId, model: model); + notifyMeWhenAvailable( + itemId: itemId, + customerId: customerId, + model: model); }, isInWishList: isInWishList, ), @@ -215,12 +221,14 @@ class __ProductDetailPageState extends State{ children: [ FlatButton( onPressed: () async { - if(widget.product.approvedTotalReviews>0) { + if (widget.product.approvedTotalReviews > + 0) { GifLoaderDialogUtils.showMyDialog( context); await model.getProductReviewsData( widget.product.id); - GifLoaderDialogUtils.hideDialog(context); + GifLoaderDialogUtils.hideDialog( + context); } else { model.clearReview(); } @@ -322,21 +330,27 @@ class __ProductDetailPageState extends State{ addToWishlistFunction({itemID, ProductDetailViewModel model}) async { isInWishList = true; await model.addToWishlistData(itemID); + setState(() {}); } deleteFromWishlistFunction({itemID, ProductDetailViewModel model}) async { isInWishList = false; await model.deleteWishlistData(itemID); + setState(() {}); } } - -addToCartFunction({quantity, itemID, BuildContext context,ProductDetailViewModel model}) async { +addToCartFunction( + {quantity, + itemID, + BuildContext context, + ProductDetailViewModel model}) async { GifLoaderDialogUtils.showMyDialog(context); await model.addToCartData(quantity, itemID); GifLoaderDialogUtils.hideDialog(context); } -notifyMeWhenAvailable({itemId, customerId,ProductDetailViewModel model }) async { +notifyMeWhenAvailable( + {itemId, customerId, ProductDetailViewModel model}) async { await model.notifyMe(customerId, itemId); -} \ No newline at end of file +} diff --git a/lib/pages/pharmacies/screens/product-details/shared/product_details_app_bar.dart b/lib/pages/pharmacies/screens/product-details/shared/product_details_app_bar.dart index d5fa1165..367e0d35 100644 --- a/lib/pages/pharmacies/screens/product-details/shared/product_details_app_bar.dart +++ b/lib/pages/pharmacies/screens/product-details/shared/product_details_app_bar.dart @@ -18,14 +18,18 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget { final ProductDetailViewModel model; final Function addToWishlistFunction; + final Function deleteFromWishlistFunction; final int quantity; + final bool isInWishList; ProductAppBar( {Key key, this.product, this.model, this.addToWishlistFunction, - this.quantity}) + this.quantity, + this.deleteFromWishlistFunction, + this.isInWishList}) : super(key: key); AuthenticatedUserObject authenticatedUserObject = @@ -76,8 +80,7 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget { icon: FontAwesomeIcons.ellipsisV, color: Colors.grey, onPress: () { - settingModalBottomSheet( - context); + settingModalBottomSheet(context); }, ), ], @@ -106,38 +109,48 @@ class ProductAppBar extends StatelessWidget with PreferredSizeWidget { title: Text( TranslationBase.of(context).addToCart, ), - onTap: () => { - if (quantity > 0) - { - addToCartFunction( - quantity: quantity, - itemID: itemID, - context: context, - model: model) - } - else - { - AppToast.showErrorToast( - message: "you should add quantity") - } - }), + onTap: () async { + if (quantity > 0) { + { + await addToCartFunction( + quantity: quantity, + itemID: itemID, + context: context, + model: model); + + Navigator.of(context).pop(); + } + } else { + AppToast.showErrorToast( + message: "you should add quantity"); + } + }), ListTile( - leading: Icon(Icons.favorite_border), - title: Text( - TranslationBase.of(context).addToWishlist, - ), - onTap: () { - addToWishlistFunction(); - } - ), + leading: Icon( + !isInWishList ? Icons.favorite_border : Icons.favorite, + color: !isInWishList ? Colors.white : Colors.red[800], + ), + title: Text( + isInWishList + ? TranslationBase.of(context).removeFromWishlist + : TranslationBase.of(context).addToWishlist, + ), + onTap: () async { + if (isInWishList) + await deleteFromWishlistFunction(); + else + await addToWishlistFunction(); + Navigator.of(context).pop(); + }), ListTile( leading: Icon(Icons.compare), title: Text( TranslationBase.of(context).compare, ), - onTap: () => { + onTap: () { Provider.of(context, listen: false) - .addItem(specificationData), + .addItem(specificationData); + Navigator.of(context).pop(); }, ), ], diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 158d8afb..d8c3ff7b 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -1398,6 +1398,8 @@ class TranslationBase { String get addToCart => localizedValues['addToCart'][locale.languageCode]; String get addToWishlist => localizedValues['addToWishlist'][locale.languageCode]; + String get removeFromWishlist => + localizedValues['removeFromWishlist'][locale.languageCode]; String get buyNow => localizedValues['buyNow'][locale.languageCode]; String get quantityShortcut => localizedValues['quantityShortcut'][locale.languageCode];