diff --git a/assets/images/new/add_to_cart.svg b/assets/images/new/add_to_cart.svg
new file mode 100644
index 00000000..f01f6033
--- /dev/null
+++ b/assets/images/new/add_to_cart.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/new/body_parts/female/abdomin.png b/assets/images/new/body_parts/female/abdomin.png
new file mode 100644
index 00000000..f4918d71
Binary files /dev/null and b/assets/images/new/body_parts/female/abdomin.png differ
diff --git a/assets/images/new/body_parts/female/abdomin.svg b/assets/images/new/body_parts/female/abdomin.svg
deleted file mode 100644
index cc1dd1d0..00000000
--- a/assets/images/new/body_parts/female/abdomin.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/anal.png b/assets/images/new/body_parts/female/anal.png
new file mode 100644
index 00000000..d96ef288
Binary files /dev/null and b/assets/images/new/body_parts/female/anal.png differ
diff --git a/assets/images/new/body_parts/female/anal.svg b/assets/images/new/body_parts/female/anal.svg
deleted file mode 100644
index 96c9734d..00000000
--- a/assets/images/new/body_parts/female/anal.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/axilla.png b/assets/images/new/body_parts/female/axilla.png
new file mode 100644
index 00000000..f38be6b3
Binary files /dev/null and b/assets/images/new/body_parts/female/axilla.png differ
diff --git a/assets/images/new/body_parts/female/axilla.svg b/assets/images/new/body_parts/female/axilla.svg
deleted file mode 100644
index 257b1c08..00000000
--- a/assets/images/new/body_parts/female/axilla.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/back.png b/assets/images/new/body_parts/female/back.png
new file mode 100644
index 00000000..65d9ef19
Binary files /dev/null and b/assets/images/new/body_parts/female/back.png differ
diff --git a/assets/images/new/body_parts/female/back.svg b/assets/images/new/body_parts/female/back.svg
deleted file mode 100644
index 96eba049..00000000
--- a/assets/images/new/body_parts/female/back.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/bikini.png b/assets/images/new/body_parts/female/bikini.png
new file mode 100644
index 00000000..a1a68423
Binary files /dev/null and b/assets/images/new/body_parts/female/bikini.png differ
diff --git a/assets/images/new/body_parts/female/bikini.svg b/assets/images/new/body_parts/female/bikini.svg
deleted file mode 100644
index 24892c80..00000000
--- a/assets/images/new/body_parts/female/bikini.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/bikini_line.png b/assets/images/new/body_parts/female/bikini_line.png
new file mode 100644
index 00000000..12fc0e6e
Binary files /dev/null and b/assets/images/new/body_parts/female/bikini_line.png differ
diff --git a/assets/images/new/body_parts/female/bikini_line.svg b/assets/images/new/body_parts/female/bikini_line.svg
deleted file mode 100644
index f1f94b7f..00000000
--- a/assets/images/new/body_parts/female/bikini_line.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/buttocks.png b/assets/images/new/body_parts/female/buttocks.png
new file mode 100644
index 00000000..b83576f3
Binary files /dev/null and b/assets/images/new/body_parts/female/buttocks.png differ
diff --git a/assets/images/new/body_parts/female/buttocks.svg b/assets/images/new/body_parts/female/buttocks.svg
deleted file mode 100644
index 59cd0071..00000000
--- a/assets/images/new/body_parts/female/buttocks.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/chest.png b/assets/images/new/body_parts/female/chest.png
new file mode 100644
index 00000000..727ebe7a
Binary files /dev/null and b/assets/images/new/body_parts/female/chest.png differ
diff --git a/assets/images/new/body_parts/female/chest.svg b/assets/images/new/body_parts/female/chest.svg
deleted file mode 100644
index 3b681f90..00000000
--- a/assets/images/new/body_parts/female/chest.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/chest_line.png b/assets/images/new/body_parts/female/chest_line.png
new file mode 100644
index 00000000..0b4fecb8
Binary files /dev/null and b/assets/images/new/body_parts/female/chest_line.png differ
diff --git a/assets/images/new/body_parts/female/chest_line.svg b/assets/images/new/body_parts/female/chest_line.svg
deleted file mode 100644
index dc4f8b25..00000000
--- a/assets/images/new/body_parts/female/chest_line.svg
+++ /dev/null
@@ -1,345 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/full_leg.svg b/assets/images/new/body_parts/female/full_leg.svg
deleted file mode 100644
index e1a5e46d..00000000
--- a/assets/images/new/body_parts/female/full_leg.svg
+++ /dev/null
@@ -1,348 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/full_legs.png b/assets/images/new/body_parts/female/full_legs.png
new file mode 100644
index 00000000..5a365a7e
Binary files /dev/null and b/assets/images/new/body_parts/female/full_legs.png differ
diff --git a/assets/images/new/body_parts/female/lower_arm.png b/assets/images/new/body_parts/female/lower_arm.png
new file mode 100644
index 00000000..717b2cde
Binary files /dev/null and b/assets/images/new/body_parts/female/lower_arm.png differ
diff --git a/assets/images/new/body_parts/female/lower_arm.svg b/assets/images/new/body_parts/female/lower_arm.svg
deleted file mode 100644
index 6d5d2f39..00000000
--- a/assets/images/new/body_parts/female/lower_arm.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/lower_leg.png b/assets/images/new/body_parts/female/lower_leg.png
new file mode 100644
index 00000000..88ccacef
Binary files /dev/null and b/assets/images/new/body_parts/female/lower_leg.png differ
diff --git a/assets/images/new/body_parts/female/lower_leg.svg b/assets/images/new/body_parts/female/lower_leg.svg
deleted file mode 100644
index 4961af4b..00000000
--- a/assets/images/new/body_parts/female/lower_leg.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/shoulder.svg b/assets/images/new/body_parts/female/shoulder.svg
deleted file mode 100644
index ce611e29..00000000
--- a/assets/images/new/body_parts/female/shoulder.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/shoulders.png b/assets/images/new/body_parts/female/shoulders.png
new file mode 100644
index 00000000..e1f253a8
Binary files /dev/null and b/assets/images/new/body_parts/female/shoulders.png differ
diff --git a/assets/images/new/body_parts/female/upper_arm.png b/assets/images/new/body_parts/female/upper_arm.png
new file mode 100644
index 00000000..1edb873c
Binary files /dev/null and b/assets/images/new/body_parts/female/upper_arm.png differ
diff --git a/assets/images/new/body_parts/female/upper_arm.svg b/assets/images/new/body_parts/female/upper_arm.svg
deleted file mode 100644
index ec126ffd..00000000
--- a/assets/images/new/body_parts/female/upper_arm.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/upper_leg.svg b/assets/images/new/body_parts/female/upper_leg.svg
deleted file mode 100644
index b1fd3a95..00000000
--- a/assets/images/new/body_parts/female/upper_leg.svg
+++ /dev/null
@@ -1,346 +0,0 @@
-
diff --git a/assets/images/new/body_parts/female/upper_legs.png b/assets/images/new/body_parts/female/upper_legs.png
new file mode 100644
index 00000000..a8aa2ec7
Binary files /dev/null and b/assets/images/new/body_parts/female/upper_legs.png differ
diff --git a/assets/images/new/body_parts/male/abdomin.png b/assets/images/new/body_parts/male/abdomin.png
new file mode 100644
index 00000000..1b180b42
Binary files /dev/null and b/assets/images/new/body_parts/male/abdomin.png differ
diff --git a/assets/images/new/body_parts/male/abdomin.svg b/assets/images/new/body_parts/male/abdomin.svg
deleted file mode 100644
index 82e2d556..00000000
--- a/assets/images/new/body_parts/male/abdomin.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/axilla.png b/assets/images/new/body_parts/male/axilla.png
new file mode 100644
index 00000000..61af9492
Binary files /dev/null and b/assets/images/new/body_parts/male/axilla.png differ
diff --git a/assets/images/new/body_parts/male/axilla.svg b/assets/images/new/body_parts/male/axilla.svg
deleted file mode 100644
index 85abbfda..00000000
--- a/assets/images/new/body_parts/male/axilla.svg
+++ /dev/null
@@ -1,186 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/bikini.png b/assets/images/new/body_parts/male/bikini.png
new file mode 100644
index 00000000..aa98ea74
Binary files /dev/null and b/assets/images/new/body_parts/male/bikini.png differ
diff --git a/assets/images/new/body_parts/male/bikini.svg b/assets/images/new/body_parts/male/bikini.svg
deleted file mode 100644
index 1c545916..00000000
--- a/assets/images/new/body_parts/male/bikini.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/bikini_line.png b/assets/images/new/body_parts/male/bikini_line.png
new file mode 100644
index 00000000..60ed64e2
Binary files /dev/null and b/assets/images/new/body_parts/male/bikini_line.png differ
diff --git a/assets/images/new/body_parts/male/bikini_line.svg b/assets/images/new/body_parts/male/bikini_line.svg
deleted file mode 100644
index 7fdc51d1..00000000
--- a/assets/images/new/body_parts/male/bikini_line.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/chest.png b/assets/images/new/body_parts/male/chest.png
new file mode 100644
index 00000000..b7cec070
Binary files /dev/null and b/assets/images/new/body_parts/male/chest.png differ
diff --git a/assets/images/new/body_parts/male/chest.svg b/assets/images/new/body_parts/male/chest.svg
deleted file mode 100644
index 85a761fe..00000000
--- a/assets/images/new/body_parts/male/chest.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/chest_line.png b/assets/images/new/body_parts/male/chest_line.png
new file mode 100644
index 00000000..41e779f3
Binary files /dev/null and b/assets/images/new/body_parts/male/chest_line.png differ
diff --git a/assets/images/new/body_parts/male/chest_line.svg b/assets/images/new/body_parts/male/chest_line.svg
deleted file mode 100644
index 806ddb0c..00000000
--- a/assets/images/new/body_parts/male/chest_line.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/full_leg.svg b/assets/images/new/body_parts/male/full_leg.svg
deleted file mode 100644
index b5755167..00000000
--- a/assets/images/new/body_parts/male/full_leg.svg
+++ /dev/null
@@ -1,230 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/full_legs.png b/assets/images/new/body_parts/male/full_legs.png
new file mode 100644
index 00000000..eee2fa07
Binary files /dev/null and b/assets/images/new/body_parts/male/full_legs.png differ
diff --git a/assets/images/new/body_parts/male/full_neck.png b/assets/images/new/body_parts/male/full_neck.png
new file mode 100644
index 00000000..a75159f6
Binary files /dev/null and b/assets/images/new/body_parts/male/full_neck.png differ
diff --git a/assets/images/new/body_parts/male/full_neck.svg b/assets/images/new/body_parts/male/full_neck.svg
deleted file mode 100644
index 43183598..00000000
--- a/assets/images/new/body_parts/male/full_neck.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/half_neck.png b/assets/images/new/body_parts/male/half_neck.png
new file mode 100644
index 00000000..5ee0249c
Binary files /dev/null and b/assets/images/new/body_parts/male/half_neck.png differ
diff --git a/assets/images/new/body_parts/male/half_neck.svg b/assets/images/new/body_parts/male/half_neck.svg
deleted file mode 100644
index 4e57b51c..00000000
--- a/assets/images/new/body_parts/male/half_neck.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_arm.png b/assets/images/new/body_parts/male/lower_arm.png
new file mode 100644
index 00000000..120242ed
Binary files /dev/null and b/assets/images/new/body_parts/male/lower_arm.png differ
diff --git a/assets/images/new/body_parts/male/lower_arm.svg b/assets/images/new/body_parts/male/lower_arm.svg
deleted file mode 100644
index c8dbf48d..00000000
--- a/assets/images/new/body_parts/male/lower_arm.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_leg.svg b/assets/images/new/body_parts/male/lower_leg.svg
deleted file mode 100644
index 091c29a4..00000000
--- a/assets/images/new/body_parts/male/lower_leg.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/lower_legs.png b/assets/images/new/body_parts/male/lower_legs.png
new file mode 100644
index 00000000..8367aa8c
Binary files /dev/null and b/assets/images/new/body_parts/male/lower_legs.png differ
diff --git a/assets/images/new/body_parts/male/shoulders.png b/assets/images/new/body_parts/male/shoulders.png
new file mode 100644
index 00000000..907f2dd7
Binary files /dev/null and b/assets/images/new/body_parts/male/shoulders.png differ
diff --git a/assets/images/new/body_parts/male/shoulders.svg b/assets/images/new/body_parts/male/shoulders.svg
deleted file mode 100644
index bd6cac52..00000000
--- a/assets/images/new/body_parts/male/shoulders.svg
+++ /dev/null
@@ -1,312 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_arm.png b/assets/images/new/body_parts/male/upper_arm.png
new file mode 100644
index 00000000..f80a75da
Binary files /dev/null and b/assets/images/new/body_parts/male/upper_arm.png differ
diff --git a/assets/images/new/body_parts/male/upper_arm.svg b/assets/images/new/body_parts/male/upper_arm.svg
deleted file mode 100644
index 7d959a0d..00000000
--- a/assets/images/new/body_parts/male/upper_arm.svg
+++ /dev/null
@@ -1,186 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_leg.svg b/assets/images/new/body_parts/male/upper_leg.svg
deleted file mode 100644
index 342cfd84..00000000
--- a/assets/images/new/body_parts/male/upper_leg.svg
+++ /dev/null
@@ -1,210 +0,0 @@
-
diff --git a/assets/images/new/body_parts/male/upper_legs.png b/assets/images/new/body_parts/male/upper_legs.png
new file mode 100644
index 00000000..e0c973b7
Binary files /dev/null and b/assets/images/new/body_parts/male/upper_legs.png differ
diff --git a/assets/images/new/cart.svg b/assets/images/new/cart.svg
new file mode 100644
index 00000000..334b86ba
--- /dev/null
+++ b/assets/images/new/cart.svg
@@ -0,0 +1,7 @@
+
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index e13fdb9a..ee0d4f2f 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -1694,8 +1694,7 @@ const Map localizedValues = {
"lowLimits": {"en": "Please check the value you have entered, since the body fat percentage cannot be this low.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، حيث لا يمكن أن تكون نسبة الدهون في الجسم منخفضة."},
"estimates": {"en": "Estimates the total body fat based on\nthe size", "ar": "تقدير إجمالي الدهون في الجسم بناءً على \ n الحجم"},
-
- "myCart": {"en": "Cart", "ar": "عربة التسوق"},
+ "myCart": {"en": "My Cart", "ar": "عربة التسوق"},
"browseOffers": {"en": "Browse offers by clinic", "ar": "تصفح العروض حسب العيادة"},
"inactiveAct":{"en":"Almost inactive (little or no exercise)","ar":"غير نشط تقريبا (ممارسة الرياضة قليلة أو منعدمة)"},
"light":{"en":"Lightly active (1-3) days per week","ar":"خفيف النشاط (1-3 أيام في الأسبوع)"},
diff --git a/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart b/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
index fff3fbf4..23952514 100644
--- a/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
+++ b/lib/core/viewModels/pharmacyModule/product_detail_view_model.dart
@@ -57,10 +57,10 @@ class ProductDetailViewModel extends BaseViewModel {
setState(ViewState.Idle);
}
- Future notifyMe(customerId, itemID, ) async {
+ Future notifyMe(customerId, itemID) async {
hasError = false;
setState(ViewState.BusyLocal);
- await _productDetailService.notifyMe(customerId, itemID, );
+ await _productDetailService.notifyMe(customerId, itemID);
if (_productDetailService.hasError) {
error = _productDetailService.error;
setState(ViewState.ErrorLocal);
diff --git a/lib/pages/packages_offers/OfferAndPackageDetailPage.dart b/lib/pages/packages_offers/OfferAndPackageDetailPage.dart
index 17c88cc8..c4d0ce6e 100644
--- a/lib/pages/packages_offers/OfferAndPackageDetailPage.dart
+++ b/lib/pages/packages_offers/OfferAndPackageDetailPage.dart
@@ -4,11 +4,11 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:expandable/expandable.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:html/parser.dart';
import 'package:rating_bar/rating_bar.dart';
@@ -45,185 +45,171 @@ class OfferAndPackagesDetailState extends State {
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
- body: SingleChildScrollView(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- color: Colors.white,
- padding: const EdgeInsets.all(21.0),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(15.0),
- child: Image.network("https://mdlaboratories.com/offersdiscounts/images/thumbs/0000162_dermatology-testing.jpeg", fit: BoxFit.fill),
- ),
- ),
- Container(
- padding: const EdgeInsets.only(left: 21.0, right: 21.0, top: 21.0),
- child: Text(widget.itemModel.name, maxLines: 1, style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold, letterSpacing: -1.14))),
- Container(
- padding: const EdgeInsets.only(left: 21.0, right: 21.0),
- child: Text(widget.itemModel.shortDescription,
- maxLines: 2, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.textColor), overflow: TextOverflow.clip)),
- Row(
+ body: Column(
+ children: [
+ Expanded(
+ child: ListView(
+ physics: BouncingScrollPhysics(),
children: [
Container(
- padding: const EdgeInsets.only(left: 21.0, right: 21.0, top: 12.0),
- child: RatingBar.readOnly(
- initialRating: 4.5,
- size: 18.0,
- filledColor: Color(0XFFD02127),
- emptyColor: Color(0XFFD02127),
- isHalfAllowed: true,
- halfFilledIcon: Icons.star_half,
- filledIcon: Icons.star,
- emptyIcon: Icons.star_border,
+ color: Colors.white,
+ padding: const EdgeInsets.all(21.0),
+ child: AspectRatio(
+ aspectRatio: 333 / 333,
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(15.0),
+ child: Image.network("https://mdlaboratories.com/offersdiscounts/images/thumbs/0000162_dermatology-testing.jpeg", fit: BoxFit.fill),
+ ),
),
),
- ],
- ),
- Container(
- padding: const EdgeInsets.only(left: 21.0, right: 21.0, top: 18.0),
- width: double.infinity,
- height: 50.0,
- child: ListView.separated(
- scrollDirection: Axis.horizontal,
- shrinkWrap: true,
- itemCount: widget.itemModel.storeNames.length,
- separatorBuilder: (context, index) {
- return mWidth(5.0);
- },
- itemBuilder: (BuildContext context, int index) {
- return contactButton(widget.itemModel.storeNames[index].toString());
- },
- ),
- ),
- Container(
- padding: const EdgeInsets.only(top: 18.0),
- child: ExpandableNotifier(
- initialExpanded: true,
- child: Container(
- color: Colors.white,
+ Padding(
+ padding: const EdgeInsets.all(21.0),
child: Column(
- children: [
- ScrollOnExpand(
- scrollOnExpand: true,
- scrollOnCollapse: false,
- child: ExpandablePanel(
- hasIcon: false,
- theme: const ExpandableThemeData(
- headerAlignment: ExpandablePanelHeaderAlignment.center,
- tapBodyToCollapse: true,
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ widget.itemModel.name,
+ maxLines: 1,
+ style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold, color: Color(0xff2E303A), letterSpacing: -1.14),
+ ),
+ Text(
+ widget.itemModel.shortDescription,
+ style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -.56),
+ ),
+ SizedBox(height: 9),
+ Row(
+ children: [
+ RatingBar.readOnly(
+ initialRating: 4.5,
+ // todo ask haroon about rating value
+ size: 18.0,
+ filledColor: Color(0XFFD02127),
+ emptyColor: Color(0XFFD02127),
+ isHalfAllowed: true,
+ halfFilledIcon: Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star_border,
),
- header: Padding(
- padding: const EdgeInsets.only(top: 20, bottom: 20, left: 21, right: 21),
- child: InkWell(
+ ],
+ ),
+ SizedBox(height: 16),
+ SizedBox(
+ height: 34,
+ child: ListView.separated(
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ physics: BouncingScrollPhysics(),
+ itemCount: widget.itemModel.storeNames.length,
+ separatorBuilder: (context, index) {
+ return mWidth(5.0);
+ },
+ itemBuilder: (BuildContext context, int index) {
+ return contactButton(widget.itemModel.storeNames[index].toString());
+ },
+ ),
+ ),
+ ],
+ ),
+ ),
+ ExpandableNotifier(
+ initialExpanded: true,
+ child: Container(
+ color: Colors.white,
+ margin: EdgeInsets.only(bottom: 21),
+ child: Column(
+ children: [
+ ScrollOnExpand(
+ scrollOnExpand: true,
+ scrollOnCollapse: false,
+ child: ExpandablePanel(
+ hasIcon: false,
+ theme: const ExpandableThemeData(
+ headerAlignment: ExpandablePanelHeaderAlignment.center,
+ tapBodyToCollapse: true,
+ ),
+ header: InkWell(
onTap: () {
setState(() {
expandFlag = !expandFlag;
controller.expanded = expandFlag;
});
},
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- TranslationBase.of(context).description,
- maxLines: 1,
- style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold, letterSpacing: -1.14),
- ),
- ],
+ child: Padding(
+ padding: const EdgeInsets.all(21),
+ child: Row(
+ children: [
+ Expanded(
+ child: Text(
+ TranslationBase.of(context).description,
+ maxLines: 1,
+ style: TextStyle(fontSize: 19.0, color: Color(0xff2E303A), fontWeight: FontWeight.bold, letterSpacing: -1.14),
+ ),
+ ),
+ Icon(
+ expandFlag ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down,
+ color: Color(0xff2E303A),
),
- ),
- Icon(
- expandFlag ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down,
- color: Color(0xff2E303A),
- ),
- ],
+ ],
+ ),
),
),
- ),
- builder: (_, collapsed, expanded) {
- return Expandable(
- controller: controller,
- collapsed: collapsed,
- expanded: Container(
- padding: const EdgeInsets.only(left: 21.0, right: 21.0, bottom: 21.0),
+ builder: (_, collapsed, expanded) {
+ return Expandable(
+ controller: controller,
+ collapsed: collapsed,
+ expanded: Padding(
+ padding: const EdgeInsets.only(bottom: 21, left: 21, right: 21),
child: Text(parseHtmlString(widget.itemModel.fullDescription),
- style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, letterSpacing: -0.56, color: CustomColors.textColor), overflow: TextOverflow.clip)),
- theme: const ExpandableThemeData(crossFadePoint: 0),
- );
- },
+ style: TextStyle(
+ fontSize: 14.0,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.56,
+ color: Color(0xff575757),
+ ),
+ overflow: TextOverflow.clip),
+ ),
+ theme: const ExpandableThemeData(crossFadePoint: 0),
+ );
+ },
+ ),
),
- ),
- ],
+ ],
+ ),
),
),
- ),
+ ],
),
- ],
- ),
- ),
- bottomSheet: Container(
- padding: const EdgeInsets.only(top: 16, bottom: 16, left: 21, right: 21),
- color: Colors.white,
- child: Row(
- children: [
- Expanded(
- child: Column(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- if(widget.itemModel.hasDiscountsApplied) Container(
- margin: const EdgeInsets.only(top: 0.0),
- child: Text(widget.itemModel.oldPrice.toString() + " " + TranslationBase.of(context).sar,
- style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w600, letterSpacing: -0.6, decoration: TextDecoration.lineThrough, color: CustomColors.grey2))),
- Container(
- margin: const EdgeInsets.only(top: 0.0),
- child: Text(widget.itemModel.price.toString().trim() + " " + TranslationBase.of(context).sar,
- style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold, letterSpacing: -0.56))),
- ],
+ ),
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ if (widget.itemModel.hasDiscountsApplied)
+ Text(widget.itemModel.oldPrice.toString() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w600, letterSpacing: -0.6, decoration: TextDecoration.lineThrough, color: CustomColors.grey2)),
+ Text(widget.itemModel.price.toString().trim() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(fontSize: 19.0, fontWeight: FontWeight.bold, letterSpacing: -0.76, color: Color(0xff2B353E))),
+ ],
+ ),
),
- ),
- SizedBox(width: 8),
- Expanded(
- child: SizedBox(
- height: 43,
- width: double.infinity,
- child: FlatButton(
- onPressed: () {
- // onCartClick();
+ SizedBox(width: 8),
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context).addToCart,
+ () {
widget.onCartClick(widget.itemModel);
},
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Padding(
- padding: const EdgeInsets.only(left: 8.0, right: 8.0),
- child: SvgPicture.asset("assets/images/new/add-to-cart.svg", color: Colors.white),
- ),
- Container(
- child: Text(
- TranslationBase.of(context).addToCart,
- textAlign: TextAlign.center,
- style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
- ),
- ),
- ],
- ),
- color: const Color(0xffD02127),
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(6),
- ),
+ svgIcon: "assets/images/new/add_to_cart.svg",
+ isTextExpanded: false,
),
),
- ),
- ],
- ),
+ ],
+ ).insideContainer
+ ],
),
),
);
@@ -236,18 +222,26 @@ class OfferAndPackagesDetailState extends State {
}
Widget contactButton(String title) {
- return SizedBox(
- height: 32,
- width: 80.0,
- child: FlatButton(
- onPressed: () {},
+ return Container(
+ height: 34,
+ padding: EdgeInsets.only(left: 12, right: 12, top: 8, bottom: 9),
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
color: Colors.white,
- shape: StadiumBorder(side: BorderSide(color: CustomColors.devider, width: 1)),
- child: Text(
- title,
- style: TextStyle(fontSize: 10, letterSpacing: -0.4, color: CustomColors.textColor),
- maxLines: 1,
+ border: Border.all(color: Color(0xffEAEAEA), width: 1),
+ borderRadius: BorderRadius.all(
+ Radius.circular(36.0),
+ ),
+ ),
+ child: Text(
+ title,
+ style: TextStyle(
+ fontSize: 10,
+ letterSpacing: -0.4,
+ fontWeight: FontWeight.w600,
+ color: Color(0xff535353),
),
+ maxLines: 1,
),
);
}
diff --git a/lib/pages/packages_offers/OfferAndPackagesCartPage.dart b/lib/pages/packages_offers/OfferAndPackagesCartPage.dart
index 4b42774b..f4743d2c 100644
--- a/lib/pages/packages_offers/OfferAndPackagesCartPage.dart
+++ b/lib/pages/packages_offers/OfferAndPackagesCartPage.dart
@@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/model/ResponseModel.dart';
import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart';
import 'package:diplomaticquarterapp/core/model/packages_offers/requests/AddProductToCartRequestModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/packages_offers/PackagesOffersViewModel.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/h20_setting.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/packages_offers/PackageOrderCompletedPage.dart';
@@ -22,7 +23,6 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
-import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
dynamic languageID;
const _columnCount = 1;
@@ -115,195 +115,122 @@ class _PackagesCartPageState extends State with AfterLayoutMix
? Column(
children: [
Expanded(
- child: StaggeredGridView.countBuilder(
- crossAxisCount: (_columnCount * _columnCount),
- itemCount: viewModel.cartItemList.length,
- itemBuilder: (BuildContext context, int index) {
- var item = viewModel.cartItemList[index];
- return Dismissible(
- key: Key(index.toString()),
- direction: DismissDirection.startToEnd,
- background: _cartItemDeleteContainer(),
- secondaryBackground: _cartItemDeleteContainer(),
- confirmDismiss: (direction) async {
- bool status = await viewModel.service.deleteProductFromCart(item.id, context: context, showLoading: false);
- return status;
- },
- onDismissed: (direction) {
- viewModel.cartItemList.removeAt(index);
+ child: ListView.separated(
+ padding: EdgeInsets.all(21),
+ physics: BouncingScrollPhysics(),
+ itemBuilder: (cxt, index) {
+ var item = viewModel.cartItemList[index];
+ return PackagesCartItemCard(
+ itemModel: item,
+ viewModel: viewModel,
+ getCartItems: fetchData,
+ shouldStepperChangeApply: (apply, total) async {
+ var request = AddProductToCartRequestModel(product_id: item.productId, quantity: apply);
+ ResponseModel response = await viewModel.service.addProductToCart(request, context: context, showLoading: false).catchError((error) {
+ utils.Utils.showErrorToast(error);
+ });
+ if (response.status) {
+ fetchData();
+ }
+ return response.status ?? false;
},
- child: PackagesCartItemCard(
- itemModel: item,
- viewModel: viewModel,
- getCartItems: fetchData,
- shouldStepperChangeApply: (apply, total) async {
- var request = AddProductToCartRequestModel(product_id: item.productId, quantity: apply);
- ResponseModel response = await viewModel.service.addProductToCart(request, context: context, showLoading: false).catchError((error) {
- utils.Utils.showErrorToast(error);
- });
- if (response.status) {
- fetchData();
- }
- return response.status ?? false;
- },
- ));
- },
- staggeredTileBuilder: (int index) => StaggeredTile.fit(_columnCount),
- mainAxisSpacing: 0,
- crossAxisSpacing: 10,
- ),
+ );
+ },
+ separatorBuilder: (cxt, index) => SizedBox(height: 12),
+ itemCount: viewModel.cartItemList.length),
),
Container(
- height: 0.25,
- color: Theme.of(context).primaryColor,
+ height: 1,
+ color: Color(0xffEFEFEF),
),
- ],
- )
- : getNoDataWidget(context),
- bottomSheet: viewModel.cartItemList.length > 0
- ? Container(
- padding: EdgeInsets.all(21.0),
- width: double.infinity,
- color: Colors.white,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisSize: MainAxisSize.min,
- children: [
- Container(
- margin: EdgeInsets.only(bottom: 12.0),
- child: InkWell(
- onTap: () => confirmSelectHospitalDialog(model.hospitals),
- child: Container(
- padding: EdgeInsets.all(12),
- width: double.infinity,
- height: 50,
- decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), border: Border.all(color: CustomColors.devider), color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(
- getHospitalName(),
- style: TextStyle(
- fontSize: 14,
- fontWeight: FontWeight.w600,
- letterSpacing: -0.46,
- ),
- ),
- Icon(Icons.arrow_drop_down),
- ],
- ),
- ),
- ),
- ),
- Container(
- margin: EdgeInsets.fromLTRB(0.0, 0.0, 20.0, 0.0),
- child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600)),
- ),
- Container(
- width: MediaQuery.of(context).size.width * 0.75,
- margin: EdgeInsets.fromLTRB(0.0, 8.0, 20.0, 5.0),
- child: getPaymentMethods(),
- ),
- Container(
- margin: EdgeInsets.only(top: 14.0),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- SizedBox(
- height: 24.0,
- width: 24.0,
- child: Checkbox(
- value: _agreeTerms,
- onChanged: (v) {
- setState(() => _agreeTerms = v);
- }),
- ),
- Expanded(
- child: Text(
- TranslationBase.of(context).iAcceptTermsConditions,
- style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.textColor, letterSpacing: -0.48),
- ),
- ),
- ],
- ),
- ),
+ if (viewModel.cartItemList.length > 0)
Container(
+ padding: EdgeInsets.only(left: 21, right: 21, top: 15, bottom: 15),
+ width: double.infinity,
+ color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
children: [
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(top: 12, bottom: 3),
- child: Row(
- children: [
- Expanded(
- child: _getNormalText(TranslationBase.of(context).patientShareToDo),
- ),
- Expanded(
- child: _getNormalText(TranslationBase.of(context).sar + " " + (subtotal ?? 0.0).toStringAsFixed(2), isBold: true),
- )
- ],
+ CommonDropDownView(
+ TranslationBase.of(context).hospital,
+ getHospitalName(),
+ () => confirmSelectHospitalDialog(model.hospitals),
+ ).withBorderedContainer,
+ SizedBox(height: 12),
+ Text(
+ TranslationBase.of(context).YouCanPayByTheFollowingOptions,
+ style: TextStyle(
+ fontSize: 16.0,
+ fontWeight: FontWeight.w600,
+ color: Color(0xff2B353E),
+ letterSpacing: -0.64,
),
),
- mDivider(Colors.grey[200]),
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(top: 3, bottom: 3),
- child: Row(
- children: [
- Expanded(
- child: _getNormalText(TranslationBase.of(context).patientTaxToDo),
- ),
- Expanded(
- child: _getNormalText(TranslationBase.of(context).sar + ' ' + (tax ?? 0.0).toStringAsFixed(2), isBold: true),
- )
- ],
- ),
+ SizedBox(
+ width: MediaQuery.of(context).size.width * 0.75,
+ child: getPaymentMethods(),
),
- mDivider(Colors.grey[200]),
- Container(
- width: double.infinity,
- padding: EdgeInsets.only(top: 3, bottom: 3),
+ Padding(
+ padding: EdgeInsets.only(top: 12.0, bottom: 12),
child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
children: [
- Expanded(
- child: _getNormalText(TranslationBase.of(context).patientShareTotalToDo),
+ SizedBox(
+ height: 16.0,
+ width: 16.0,
+ child: Checkbox(
+ value: _agreeTerms,
+ onChanged: (v) {
+ setState(() => _agreeTerms = v);
+ }),
),
+ SizedBox(width: 10),
Expanded(
- child: _getNormalText(TranslationBase.of(context).sar + ' ' + (total ?? 0.0).toStringAsFixed(2), isBold: true, isTotal: true),
- )
+ child: Text(
+ TranslationBase.of(context).iAcceptTermsConditions,
+ style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: CustomColors.textColor, letterSpacing: -0.48),
+ ),
+ ),
],
),
),
- ],
- ),
- ),
- Container(
- padding: EdgeInsets.only(top: 21, bottom: 21),
- child: DefaultButton(
- TranslationBase.of(context).payNow,
- (_agreeTerms && _selectedHospital != null)
- ? () {
- Navigator.push(context, FadePage(page: PaymentMethod(onSelectedMethod: (String metohd) {
- setState(() {});
- }))).then((value) {
- print(value);
- if (value != null) {
- _selectedPaymentMethod = value;
- _selectedPaymentParams = {"payment_method_system_name": "Payments.PayFort", "payment_option": value};
- onPayNowClick();
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _amountView(TranslationBase.of(context).patientShareToDo, (subtotal ?? 0.0).toStringAsFixed(2) + " " + TranslationBase.of(context).sar, isBold: true),
+ mDivider(Color(0xffEFEFEF)),
+ _amountView(TranslationBase.of(context).patientTaxToDo, (tax ?? 0.0).toStringAsFixed(2) + " " + TranslationBase.of(context).sar, isBold: true),
+ mDivider(Color(0xffEFEFEF)),
+ _amountView(TranslationBase.of(context).patientShareTotalToDo, (total ?? 0.0).toStringAsFixed(2) + " " + TranslationBase.of(context).sar, isBold: true, isTotal: true),
+ ],
+ ),
+ SizedBox(height: 12),
+ DefaultButton(
+ TranslationBase.of(context).payNow,
+ (_agreeTerms && _selectedHospital != null)
+ ? () {
+ Navigator.push(context, FadePage(page: PaymentMethod(onSelectedMethod: (String metohd) {
+ setState(() {});
+ }))).then((value) {
+ print(value);
+ if (value != null) {
+ _selectedPaymentMethod = value;
+ _selectedPaymentParams = {"payment_method_system_name": "Payments.PayFort", "payment_option": value};
+ onPayNowClick();
+ }
+ });
}
- });
- }
- : null,
- color: CustomColors.green,
- disabledColor: CustomColors.grey2,
+ : null,
+ color: CustomColors.green,
+ disabledColor: CustomColors.grey2,
+ ),
+ ],
),
- ),
- ],
- ),
+ )
+ ],
)
- : SizedBox(),
+ : getNoDataWidget(context),
);
},
);
@@ -407,6 +334,19 @@ class _PackagesCartPageState extends State with AfterLayoutMix
// )),
// );
// }
+_amountView(String title, String value, {bool isBold = false, bool isTotal = false}) {
+ return Padding(
+ padding: const EdgeInsets.only(top: 10, bottom: 10),
+ child: Row(children: [
+ Expanded(
+ child: _getNormalText(title),
+ ),
+ Expanded(
+ child: _getNormalText(value, isBold: isBold, isTotal: isTotal),
+ ),
+ ]),
+ );
+}
_getNormalText(text, {bool isBold = false, bool isTotal = false}) {
return Text(
@@ -416,10 +356,10 @@ _getNormalText(text, {bool isBold = false, bool isTotal = false}) {
? isTotal
? 16
: 12
- : 10,
+ : 11,
letterSpacing: -0.5,
- color: isBold ? Colors.black : Colors.grey[700],
- fontWeight: FontWeight.w600,
+ color: isBold ? Color(0xff2E303A) : Color(0xff575757),
+ fontWeight: isTotal ? FontWeight.bold : FontWeight.w600,
),
);
}
diff --git a/lib/pages/packages_offers/OfferAndPackagesPage.dart b/lib/pages/packages_offers/OfferAndPackagesPage.dart
index d323b36d..2573204e 100644
--- a/lib/pages/packages_offers/OfferAndPackagesPage.dart
+++ b/lib/pages/packages_offers/OfferAndPackagesPage.dart
@@ -10,6 +10,7 @@ import 'package:diplomaticquarterapp/core/viewModels/packages_offers/PackagesOff
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
+import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/h2o/h20_setting.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/packages_offers/ClinicOfferAndPackagesPage.dart';
import 'package:diplomaticquarterapp/pages/packages_offers/OfferAndPackagesCartPage.dart';
@@ -19,13 +20,13 @@ import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart' as utils;
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/offers_packages/PackagesOfferCard.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
class PackagesHomePage extends StatefulWidget {
@@ -99,148 +100,88 @@ class _PackagesHomePageState extends State {
appBarTitle: TranslationBase.of(context).offerAndPackages,
isShowAppBar: true,
isPharmacy: false,
+ backgroundColor: Color(0xfff7f7f7),
showPharmacyCart: false,
isOfferPackages: true,
showOfferPackagesCart: false,
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
- body: SingleChildScrollView(
- child: Column(
- children: [
- Padding(
- padding: projectViewModel.isArabic ? const EdgeInsets.only(top: 21, right: 21, bottom: 21) : const EdgeInsets.only(top: 21, left: 21, bottom: 21),
- child: Column(
- children: [
- inputWidget(TranslationBase.of(context).search, "", _searchTextController, isInputTypeNum: false),
- SizedBox(
- height: 10,
- ),
- InkWell(
- onTap: () => showClinicSelectionList(),
- child: Container(
- padding: EdgeInsets.all(12),
- margin: projectViewModel.isArabic ? const EdgeInsets.only(left: 21) : const EdgeInsets.only(right: 21),
- width: double.infinity,
- height: 65,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(12),
- border: Border.all(
- color: Color(0xffefefef),
- width: 1,
- ),
- color: Colors.white),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(
- selectedClinic != null ? selectedClinic.name : TranslationBase.of(context).browseOffers,
- style: TextStyle(
- fontSize: 14,
- fontWeight: FontWeight.w600,
- letterSpacing: -0.46,
- ),
- ),
- Icon(Icons.arrow_drop_down),
- ],
- ),
- ),
- ),
- SizedBox(
- height: 20,
- ),
- Container(
- width: double.infinity,
- height: MediaQuery.of(context).size.width * 0.8,
- child: ListView.separated(
- scrollDirection: Axis.horizontal,
- shrinkWrap: true,
- itemCount: viewModel.bestSellerList.length,
- separatorBuilder: (context, index) {
- return mWidth(9.0);
- },
- itemBuilder: (BuildContext context, int index) {
- return PackagesItemCard(
- itemModel: viewModel.bestSellerList[index],
- onCartClick: onProductCartClick,
- );
- },
- ),
- ),
- SizedBox(
- height: 21,
- ),
- // // Best Seller Horizontal Scrollable List
- Container(
- width: double.infinity,
- height: MediaQuery.of(context).size.width * 0.8,
- child: ListView.separated(
- scrollDirection: Axis.horizontal,
- shrinkWrap: true,
- itemCount: viewModel.latestOffersList.length,
- separatorBuilder: (context, index) {
- return mWidth(9.0);
- },
- itemBuilder: (BuildContext context, int index) {
- return PackagesItemCard(
- itemModel: viewModel.latestOffersList[index],
- onCartClick: onProductCartClick,
- );
- },
- ),
- ),
- ],
- ),
- ),
- SizedBox(
- height: 50.0,
- )
- ],
- ),
- ),
- bottomSheet: Container(
- color: Colors.white,
- padding: const EdgeInsets.all(12.0),
- child: SizedBox(
- height: 43,
- width: double.infinity,
- child: FlatButton(
- onPressed: () {
- onCartClick();
- },
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
+ body: Column(
+ children: [
+ Expanded(
+ child: ListView(
+ padding: EdgeInsets.only(top: 21, bottom: 21),
+ physics: BouncingScrollPhysics(),
children: [
+ inputWidget(TranslationBase.of(context).search, "", _searchTextController, isInputTypeNum: false),
+ SizedBox(height: 12),
Padding(
- padding: const EdgeInsets.only(left: 8.0, right: 8.0),
- child: SvgPicture.asset("assets/images/new/cart.svg"),
- // child: Icon(
- // Icons.add_shopping_cart_rounded,
- // size: 30.0,
- // color: Colors.white,
- // ),
+ padding: const EdgeInsets.only(left: 21, right: 21),
+ child: CommonDropDownView(TranslationBase.of(context).browseOffers, selectedClinic?.name ?? TranslationBase.of(context).selectClinic, () => showClinicSelectionList())
+ .withBorderedContainer,
+ ),
+ SizedBox(height: 12),
+ Container(
+ width: double.infinity,
+ height: MediaQuery.of(context).size.width * 0.8,
+ child: ListView.separated(
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ physics: BouncingScrollPhysics(),
+ padding: EdgeInsets.only(left: 21, right: 21),
+ itemCount: viewModel.bestSellerList.length,
+ separatorBuilder: (context, index) {
+ return mWidth(9.0);
+ },
+ itemBuilder: (BuildContext context, int index) {
+ return PackagesItemCard(
+ itemModel: viewModel.bestSellerList[index],
+ onCartClick: onProductCartClick,
+ );
+ },
+ ),
),
+ SizedBox(height: 12),
Container(
- child: Text(
- TranslationBase.of(context).myCart,
- textAlign: TextAlign.center,
- style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
+ width: double.infinity,
+ height: MediaQuery.of(context).size.width * 0.8,
+ child: ListView.separated(
+ scrollDirection: Axis.horizontal,
+ shrinkWrap: true,
+ physics: BouncingScrollPhysics(),
+ padding: EdgeInsets.only(left: 21, right: 21),
+ itemCount: viewModel.latestOffersList.length,
+ separatorBuilder: (context, index) {
+ return mWidth(9.0);
+ },
+ itemBuilder: (BuildContext context, int index) {
+ return PackagesItemCard(
+ itemModel: viewModel.latestOffersList[index],
+ onCartClick: onProductCartClick,
+ );
+ },
),
),
],
),
- color: const Color(0xffD02127),
- shape: RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(6),
- ),
),
- ),
+ DefaultButton(
+ TranslationBase.of(context).myCart,
+ onCartClick,
+ svgIcon: "assets/images/new/cart.svg",
+ isTextExpanded: false,
+ count: viewModel?.service?.customer?.shoppingCartItems?.length ?? 0,
+ ).insideContainer
+ ],
),
);
},
);
}
+ int _selectedClinic = -1;
+
showClinicSelectionList() async {
var clinics = viewModel.service.categoryList;
if (clinics.isEmpty) {
@@ -256,9 +197,10 @@ class _PackagesHomePageState extends State {
context: context,
child: RadioSelectionDialog(
listData: list,
- selectedIndex: 0,
+ selectedIndex: _selectedClinic,
isScrollable: true,
onValueSelected: (index) async {
+ _selectedClinic = index;
selectedClinic = clinics[index];
var clinicProducts = await viewModel.service.getAllProducts(request: OffersProductsRequestModel(categoryId: selectedClinic.id), context: context, showLoading: true);
if (clinicProducts.isNotEmpty)
@@ -348,7 +290,7 @@ class _PackagesHomePageState extends State {
{VoidCallback suffixTap, bool isEnable = true, bool hasSelection = false, int lines, bool isInputTypeNum = false}) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
- margin: projectViewModel.isArabic ? const EdgeInsets.only(left: 21) : const EdgeInsets.only(right: 21),
+ margin: const EdgeInsets.only(left: 21, right: 21),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
diff --git a/lib/pages/pharmacies/screens/product-details/product-detail.dart b/lib/pages/pharmacies/screens/product-details/product-detail.dart
index 4ca6476b..c414e61e 100644
--- a/lib/pages/pharmacies/screens/product-details/product-detail.dart
+++ b/lib/pages/pharmacies/screens/product-details/product-detail.dart
@@ -1,3 +1,4 @@
+import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
@@ -5,7 +6,6 @@ import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_deta
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/product-name-and-price.dart';
-import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/recommended_products.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/reviews_info.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/shared/custom-divider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
@@ -252,17 +252,19 @@ class __ProductDetailPageState extends State {
Column(
children: [
FlatButton(
- onPressed: () async {
- GifLoaderDialogUtils.showMyDialog(context);
- await model.getProductLocationData(widget.product.sku);
- GifLoaderDialogUtils.hideDialog(context);
+ onPressed: model.isStockAvailable
+ ? () async {
+ GifLoaderDialogUtils.showMyDialog(context);
+ await model.getProductLocationData(widget.product.sku);
+ GifLoaderDialogUtils.hideDialog(context);
//
- setState(() {
- isDetails = false;
- isReviews = false;
- isAvailability = true;
- });
- },
+ setState(() {
+ isDetails = false;
+ isReviews = false;
+ isAvailability = true;
+ });
+ }
+ : null,
child: Text(
TranslationBase.of(context).availability,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
@@ -289,20 +291,18 @@ class __ProductDetailPageState extends State {
previousModel: model,
)
: isAvailability && widget.product.stockAvailability != "Out of stock"
- ? AvailabilityInfo(
- previousModel: model
- )
+ ? AvailabilityInfo(previousModel: model)
: isAvailability && widget.product.stockAvailability == "Out of stock"
- ? Container(
- // padding: EdgeInsets.all(15),
- padding: EdgeInsets.fromLTRB(15,15,15,20),
- margin: EdgeInsets.only(bottom: 20),
- alignment: Alignment.center,
- child: Text(
- TranslationBase.of(context).noLocationAvailable,
- ),
- )
- : Container(),
+ ? Container(
+ // padding: EdgeInsets.all(15),
+ padding: EdgeInsets.fromLTRB(15, 15, 15, 20),
+ margin: EdgeInsets.only(bottom: 20),
+ alignment: Alignment.center,
+ child: Text(
+ TranslationBase.of(context).noLocationAvailable,
+ ),
+ )
+ : Container(),
],
),
),
@@ -369,8 +369,9 @@ class __ProductDetailPageState extends State {
await model.addToCartData(quantity, itemID, context);
GifLoaderDialogUtils.hideDialog(context);
}
-}
-notifyMeWhenAvailable({itemId, customerId, ProductDetailViewModel model, }) async {
- await model.notifyMe(customerId, itemId, );
+ notifyMeWhenAvailable({itemId, customerId, ProductDetailViewModel model}) async {
+ await model.notifyMe(customerId, itemId);
+ }
+
}
diff --git a/lib/services/pharmacy_services/product_detail_service.dart b/lib/services/pharmacy_services/product_detail_service.dart
index 389fda0d..d326c130 100644
--- a/lib/services/pharmacy_services/product_detail_service.dart
+++ b/lib/services/pharmacy_services/product_detail_service.dart
@@ -123,7 +123,7 @@ class ProductDetailService extends BaseService {
return Future.value(localRes);
}
- Future notifyMe(customerId, itemID, ) async {
+ Future notifyMe(customerId, itemID) async {
hasError = false;
await baseAppClient.getPharmacy(SUBSCRIBE_PRODUCT + "SinceId=$customerId&ProductId=$itemID", onSuccess: (dynamic response, int statusCode) {
AppToast.showSuccessToast(message: TranslationBase.of(AppGlobal.context).notifyMeMsg
diff --git a/lib/uitl/laser_body_parts_data.dart b/lib/uitl/laser_body_parts_data.dart
index b8e8e58e..e52b4870 100644
--- a/lib/uitl/laser_body_parts_data.dart
+++ b/lib/uitl/laser_body_parts_data.dart
@@ -10,95 +10,98 @@ class LaserBodyParts {
factory LaserBodyParts() => _instance;
static Widget image(String assetUri) {
- return new SvgPicture.asset(assetUri, fit: BoxFit.cover,width: 97,height: 97,);
+ return new SvgPicture.asset(assetUri, fit: BoxFit.cover, width: 88, height: 88);
+ }
+
+ static Widget imagePng(String assetUri) {
+ return Image.asset(assetUri, fit: BoxFit.cover, width: 88, height: 88);
}
Map maleBodyMap = {
- "40": image("assets/images/new/body_parts/male/upper_arm.svg"),
- "41": image("assets/images/new/body_parts/male/lower_arm.svg"),
- "42": image("assets/images/new/body_parts/male/chest.svg"),
- "43": image("assets/images/new/body_parts/male/chest_line.svg"),
- "44": image("assets/images/new/body_parts/male/shoulders.svg"),
- "45": image("assets/images/new/body_parts/male/back.svg"),
- "46": image("assets/images/new/body_parts/male/abdomin.svg"),
- "47": image("assets/images/new/body_parts/male/upper_leg.svg"),
- "48": image("assets/images/new/body_parts/male/lower_leg.svg"),
- "49": image("assets/images/new/body_parts/male/axilla.svg")
+ "40": imagePng("assets/images/new/body_parts/male/upper_arm.png"),
+ "41": imagePng("assets/images/new/body_parts/male/lower_arm.png"),
+ "42": imagePng("assets/images/new/body_parts/male/chest.png"),
+ "43": imagePng("assets/images/new/body_parts/male/chest_line.png"),
+ "44": imagePng("assets/images/new/body_parts/male/shoulders.png"),
+ "45": imagePng("assets/images/new/body_parts/male/back.png"),
+ "46": imagePng("assets/images/new/body_parts/male/abdomin.png"),
+ "47": imagePng("assets/images/new/body_parts/male/upper_legs.png"),
+ "48": imagePng("assets/images/new/body_parts/male/lower_legs.png"),
+ "49": imagePng("assets/images/new/body_parts/male/axilla.png")
};
Map maleFaceMap = {
- "62": image("assets/images/new/body_parts/male/hydra_facial.svg"),
- "5": image("assets/images/new/body_parts/male/upper_lips.svg"),
- "6": image("assets/images/new/body_parts/male/chin.svg"),
- "7": image("assets/images/new/body_parts/male/cheek.svg"),
- "8": image("assets/images/new/body_parts/male/side_burn.svg"),
- "9": image("assets/images/new/body_parts/male/ears.svg"),
- "10": image("assets/images/new/body_parts/male/full_neck.svg"),
- "11": image("assets/images/new/body_parts/male/half_neck.svg"),
- "12": image("assets/images/new/body_parts/male/eyebrows.svg")
+ "62": image("assets/images/new/body_parts/male/hydra_facial.svg"),
+ "5": image("assets/images/new/body_parts/male/upper_lips.svg"),
+ "6": image("assets/images/new/body_parts/male/chin.svg"),
+ "7": image("assets/images/new/body_parts/male/cheek.svg"),
+ "8": image("assets/images/new/body_parts/male/side_burn.svg"),
+ "9": image("assets/images/new/body_parts/male/ears.svg"),
+ "10": image("assets/images/new/body_parts/male/full_neck.svg"),
+ "11": image("assets/images/new/body_parts/male/half_neck.svg"),
+ "12": image("assets/images/new/body_parts/male/eyebrows.svg")
};
Map maleBodyRetouchMap = {
- "51": image("assets/images/new/body_parts/male/upper_arm.svg"),
- "52": image("assets/images/new/body_parts/male/lower_arm.svg"),
- "53": image("assets/images/new/body_parts/male/chest.svg"),
- "54": image("assets/images/new/body_parts/male/shoulders.svg"),
- "55": image("assets/images/new/body_parts/male/back.svg"),
- "56": image("assets/images/new/body_parts/male/abdomin.svg"),
- "57": image("assets/images/new/body_parts/male/full_leg.svg"),
- "58": image("assets/images/new/body_parts/male/upper_leg.svg"),
- "59": image("assets/images/new/body_parts/male/lower_leg.svg"),
- "60": image("assets/images/new/body_parts/male/bikini.svg"),
- "61": image("assets/images/new/body_parts/male/bikini_line.svg")
+ "51": imagePng("assets/images/new/body_parts/male/upper_arm.png"),
+ "52": imagePng("assets/images/new/body_parts/male/lower_arm.png"),
+ "53": imagePng("assets/images/new/body_parts/male/chest.png"),
+ "54": imagePng("assets/images/new/body_parts/male/shoulders.png"),
+ "55": imagePng("assets/images/new/body_parts/male/back.png"),
+ "56": imagePng("assets/images/new/body_parts/male/abdomin.png"),
+ "57": imagePng("assets/images/new/body_parts/male/full_legs.png"),
+ "58": imagePng("assets/images/new/body_parts/male/upper_legs.png"),
+ "59": imagePng("assets/images/new/body_parts/male/lower_legs.png"),
+ "60": imagePng("assets/images/new/body_parts/male/bikini.png"),
+ "61": imagePng("assets/images/new/body_parts/male/bikini_line.png")
};
Map femaleBodyMap = {
- "40": image("assets/images/new/body_parts/female/upper_arm.svg"),
- "41": image("assets/images/new/body_parts/female/lower_arm.svg"),
- "42": image("assets/images/new/body_parts/female/chest.svg"),
- "43": image("assets/images/new/body_parts/female/chest_line.svg"),
- "44": image("assets/images/new/body_parts/female/shoulder.svg"),
- "45": image("assets/images/new/body_parts/female/back.svg"),
- "46": image("assets/images/new/body_parts/female/abdomin.svg"),
- "47": image("assets/images/new/body_parts/female/upper_leg.svg"),
- "48": image("assets/images/new/body_parts/female/lower_leg.svg"),
- "49": image("assets/images/new/body_parts/female/axilla.svg")
+ "40": imagePng("assets/images/new/body_parts/female/upper_arm.png"),
+ "41": imagePng("assets/images/new/body_parts/female/lower_arm.png"),
+ "42": imagePng("assets/images/new/body_parts/female/chest.png"),
+ "43": imagePng("assets/images/new/body_parts/female/chest_line.png"),
+ "44": imagePng("assets/images/new/body_parts/female/shoulders.png"),
+ "45": imagePng("assets/images/new/body_parts/female/back.png"),
+ "46": imagePng("assets/images/new/body_parts/female/abdomin.png"),
+ "47": imagePng("assets/images/new/body_parts/female/upper_legs.png"),
+ "48": imagePng("assets/images/new/body_parts/female/lower_leg.png"),
+ "49": imagePng("assets/images/new/body_parts/female/axilla.png")
};
Map femaleFaceMap = {
- "62": image("assets/images/new/body_parts/female/hydra_facial.svg"),
- "5": image("assets/images/new/body_parts/female/upper_lips.svg"),
- "6": image("assets/images/new/body_parts/female/chin.svg"),
- "7": image("assets/images/new/body_parts/female/cheeks.svg"),
- "8": image("assets/images/new/body_parts/female/side_burn.svg"),
- "9": image("assets/images/new/body_parts/female/ears.svg"),
- "10": image("assets/images/new/body_parts/female/full_neck.svg"),
- "11": image("assets/images/new/body_parts/female/half_neck.svg"),
- "12": image("assets/images/new/body_parts/female/eyebrows.svg")
+ "62": image("assets/images/new/body_parts/female/hydra_facial.svg"),
+ "5": image("assets/images/new/body_parts/female/upper_lips.svg"),
+ "6": image("assets/images/new/body_parts/female/chin.svg"),
+ "7": image("assets/images/new/body_parts/female/cheeks.svg"),
+ "8": image("assets/images/new/body_parts/female/side_burn.svg"),
+ "9": image("assets/images/new/body_parts/female/ears.svg"),
+ "10": image("assets/images/new/body_parts/female/full_neck.svg"),
+ "11": image("assets/images/new/body_parts/female/half_neck.svg"),
+ "12": image("assets/images/new/body_parts/female/eyebrows.svg")
};
Map femaleBodyBikiniMap = {
- "34": image("assets/images/new/body_parts/female/bikini.svg"),
- "36": image("assets/images/new/body_parts/female/bikini_line.svg"),
- "38": image("assets/images/new/body_parts/female/buttocks.svg"),
- "39": image("assets/images/new/body_parts/female/anal.svg")
+ "34": imagePng("assets/images/new/body_parts/female/bikini.png"),
+ "36": imagePng("assets/images/new/body_parts/female/bikini_line.png"),
+ "38": imagePng("assets/images/new/body_parts/female/buttocks.png"),
+ "39": imagePng("assets/images/new/body_parts/female/anal.png")
};
Map femaleBodyRetouchMap = {
- "51": image("assets/images/new/body_parts/female/upper_arm.svg"),
- "52": image("assets/images/new/body_parts/female/lower_arm.svg"),
- "53": image("assets/images/new/body_parts/female/chest.svg"),
- "54": image("assets/images/new/body_parts/female/shoulder.svg"),
- "55": image("assets/images/new/body_parts/female/back.svg"),
- "56": image("assets/images/new/body_parts/female/abdomin.svg"),
- "57": image("assets/images/new/body_parts/female/full_leg.svg"),
- "58": image("assets/images/new/body_parts/female/upper_leg.svg"),
- "59": image("assets/images/new/body_parts/female/lower_leg.svg"),
- "60": image("assets/images/new/body_parts/female/bikini.svg"),
- "61": image("assets/images/new/body_parts/female/bikini_line.svg")
+ "51": imagePng("assets/images/new/body_parts/female/upper_arm.png"),
+ "52": imagePng("assets/images/new/body_parts/female/lower_arm.png"),
+ "53": imagePng("assets/images/new/body_parts/female/chest.png"),
+ "54": imagePng("assets/images/new/body_parts/female/shoulders.png"),
+ "55": imagePng("assets/images/new/body_parts/female/back.png"),
+ "56": imagePng("assets/images/new/body_parts/female/abdomin.png"),
+ "57": imagePng("assets/images/new/body_parts/female/full_legs.png"),
+ "58": imagePng("assets/images/new/body_parts/female/upper_legs.png"),
+ "59": imagePng("assets/images/new/body_parts/female/lower_leg.png"),
+ "60": imagePng("assets/images/new/body_parts/female/bikini.png"),
+ "61": imagePng("assets/images/new/body_parts/female/bikini_line.png")
};
-
Widget getCategoryImage(bool isMale, int category, String mappingCode) {
if (isMale) {
if (category == 1) {
diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart
index 3712c0ad..76e8a8d2 100644
--- a/lib/uitl/translations_delegate_base.dart
+++ b/lib/uitl/translations_delegate_base.dart
@@ -511,7 +511,7 @@ class TranslationBase {
String get switchUser => localizedValues['switch-login'][locale.languageCode];
- String get removeMember => localizedValues['remove-membe'][locale.languageCode];
+ String get removeMember => localizedValues['remove-member'][locale.languageCode];
String get allowView => localizedValues['allow-view'][locale.languageCode];
diff --git a/lib/widgets/buttons/defaultButton.dart b/lib/widgets/buttons/defaultButton.dart
index 14e93d66..affd9a3e 100644
--- a/lib/widgets/buttons/defaultButton.dart
+++ b/lib/widgets/buttons/defaultButton.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:flutter_svg/svg.dart';
extension WithContainer on Widget {
Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this);
@@ -11,8 +12,12 @@ class DefaultButton extends StatelessWidget {
final Color color;
final Color disabledColor;
final IconData iconData;
+ final String svgIcon;
final double fontSize;
- DefaultButton(this.text, this.onPress, {this.color, this.disabledColor, this.textColor = Colors.white, this.iconData, this.fontSize});
+ final bool isTextExpanded;
+ final int count;
+
+ DefaultButton(this.text, this.onPress, {this.color, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize});
@override
Widget build(BuildContext context) {
@@ -22,15 +27,43 @@ class DefaultButton extends StatelessWidget {
child: FlatButton(
onPressed: onPress,
child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
children: [
if (iconData != null) Icon(iconData, color: textColor),
- Expanded(
- child: Text(
- text,
- textAlign: TextAlign.center,
- style: TextStyle(fontSize: fontSize ?? 16, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48),
+ if (svgIcon != null) SvgPicture.asset(svgIcon,color: textColor),
+ if (!isTextExpanded)
+ Padding(
+ padding: EdgeInsets.only(left: (iconData ?? svgIcon) != null ? 6 : 0),
+ child: Text(
+ text,
+ textAlign: TextAlign.center,
+ style: TextStyle(fontSize: fontSize ?? 16, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48),
+ ),
+ ),
+ if (isTextExpanded)
+ Expanded(
+ child: Text(
+ text,
+ textAlign: TextAlign.center,
+ style: TextStyle(fontSize: fontSize ?? 16, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48),
+ ),
),
- ),
+ if (count > 0)
+ Align(
+ alignment: Alignment.topCenter,
+ child: Container(
+ margin: EdgeInsets.only(top: 6, bottom: 6),
+ padding: EdgeInsets.only(left: 5, right: 5),
+ alignment: Alignment.center,
+ height: 16,
+ decoration: BoxDecoration(borderRadius: BorderRadius.circular(10.0), color: Colors.white),
+ child: Text(
+ "$count",
+ textAlign: TextAlign.center,
+ style: TextStyle(fontSize: 12, fontWeight: FontWeight.w700, color: Color(0xffD02127), letterSpacing: -0.6),
+ ),
+ ),
+ )
],
),
// color: Color(0xffD02127),
diff --git a/lib/widgets/offers_packages/PackagesCartItemCard.dart b/lib/widgets/offers_packages/PackagesCartItemCard.dart
index 10c7e5b1..d53f9505 100644
--- a/lib/widgets/offers_packages/PackagesCartItemCard.dart
+++ b/lib/widgets/offers_packages/PackagesCartItemCard.dart
@@ -30,21 +30,20 @@ class PackagesCartItemCardState extends State {
wide = !wide;
return Container(
decoration: cardRadius(15.0),
- margin: EdgeInsets.only(left: 21.0, right: 21.0, top: 12.0),
- height: 90,
+ height: 95,
+ padding: EdgeInsets.all(9),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
_image(widget.itemModel.product),
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- _itemName(widget.itemModel.product.getName()),
- _itemDescription(widget.itemModel.product.shortDescription),
- Container(
- padding: const EdgeInsets.only(top: 12.0),
- width: MediaQuery.of(context).size.width * 0.65,
- child: Row(
+ SizedBox(width: 7),
+ Expanded(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ _itemName(widget.itemModel.product.getName()),
+ Expanded(child: _itemDescription(widget.itemModel.product.shortDescription)),
+ Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -54,11 +53,12 @@ class PackagesCartItemCardState extends State {
await widget.viewModel.service.deleteProductFromCart(widget.itemModel.id, context: context, showLoading: false);
widget.getCartItems();
},
- child: Row(
- children: [
- Padding(
- padding: const EdgeInsets.only(left: 5.0, right: 5.0),
- child: Text(
+ child: Padding(
+ padding: const EdgeInsets.only(right: 3, bottom: 3),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Text(
TranslationBase.of(context).removeMember,
style: TextStyle(
fontSize: 10,
@@ -67,15 +67,16 @@ class PackagesCartItemCardState extends State {
letterSpacing: -0.36,
),
),
- ),
- SvgPicture.asset("assets/images/new-design/delete.svg", color: CustomColors.accentColor),
- ],
+ SizedBox(width: 2),
+ SvgPicture.asset("assets/images/new-design/delete.svg", color: CustomColors.accentColor),
+ ],
+ ),
),
),
],
),
- ),
- ],
+ ],
+ ),
)
],
),
@@ -85,52 +86,41 @@ class PackagesCartItemCardState extends State {
Widget _image(PackagesResponseModel model) => AspectRatio(
aspectRatio: 1 / 1,
- child: Padding(
- padding: const EdgeInsets.all(9),
- child: Container(
- decoration: BoxDecoration(
- border: Border.all(color: Colors.grey[300], width: 0.25),
- boxShadow: [BoxShadow(color: Colors.grey[200], blurRadius: 2.0, spreadRadius: 1, offset: Offset(1, 1.5))],
- borderRadius: BorderRadius.circular(15),
- color: Colors.white,
- shape: BoxShape.rectangle,
- ),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(15),
- child: (model.images.isNotEmpty) ? Utils.loadNetworkImage(url: model.images.first.src, fitting: BoxFit.fill) : Container(color: Colors.grey[200])),
- ),
- ),
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(15), child: (model.images.isNotEmpty) ? Utils.loadNetworkImage(url: model.images.first.src, fitting: BoxFit.fill) : Container(color: Colors.grey[200])),
);
-Widget _itemName(String name) => Padding(
- padding: const EdgeInsets.only(top: 9.0),
- child: Text(name,
- style: TextStyle(
- fontSize: 14,
- fontWeight: FontWeight.bold,
- letterSpacing: -0.56,
- )));
-
-Widget _itemDescription(String desc) => Padding(
- padding: const EdgeInsets.only(top: 0.0),
- child: Text(desc,
- style: TextStyle(
- fontSize: 10,
- // fontWeight: FontWeight.bold,
- letterSpacing: -0.4,
- )));
+Widget _itemName(String name) => Text(
+ name,
+ style: TextStyle(
+ fontSize: 14,
+ fontWeight: FontWeight.bold,
+ color: Color(0xff2B353E),
+ letterSpacing: -0.56,
+ ),
+ );
-Widget _itemPrice(double price, {@required BuildContext context}) {
- final prc = (price ?? 0.0).toStringAsFixed(2);
- return Padding(
- padding: const EdgeInsets.all(0),
- child: Text(
- '${prc} ${TranslationBase.of(context).sar}',
+Widget _itemDescription(String desc) => Text(
+ desc,
+ maxLines: 2,
+ overflow: TextOverflow.ellipsis,
style: TextStyle(
- fontSize: 11,
- fontWeight: FontWeight.w600,
+ fontSize: 10,
+ fontWeight: FontWeight.w500,
+ color: Color(0xff535353),
letterSpacing: -0.4,
),
+ );
+
+Widget _itemPrice(double price, {@required BuildContext context}) {
+ final prc = (price ?? 0.0).toStringAsFixed(2);
+ return Text(
+ '$prc ${TranslationBase.of(context).sar}',
+ style: TextStyle(
+ fontSize: 11,
+ fontWeight: FontWeight.w600,
+ color: Color(0xff5D5D5D),
+ letterSpacing: -0.44,
),
);
}
diff --git a/lib/widgets/offers_packages/PackagesOfferCard.dart b/lib/widgets/offers_packages/PackagesOfferCard.dart
index be756caf..14b1aeb0 100644
--- a/lib/widgets/offers_packages/PackagesOfferCard.dart
+++ b/lib/widgets/offers_packages/PackagesOfferCard.dart
@@ -2,10 +2,7 @@ import 'package:diplomaticquarterapp/core/model/packages_offers/responses/Packag
import 'package:diplomaticquarterapp/pages/packages_offers/OfferAndPackageDetailPage.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
-import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
-import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
-import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -32,6 +29,103 @@ class PackagesItemCardState extends State {
@override
Widget build(BuildContext context) {
wide = !wide;
+ return InkWell(
+ onTap: () {
+ Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => OfferAndPackagesDetail(itemModel: widget.itemModel, onCartClick: widget.onCartClick)));
+ },
+ child: AspectRatio(
+ aspectRatio: 162 / 279,
+ child: Container(
+ // width: widget.itemWidth,
+ // color: Colors.transparent,
+ decoration: cardRadius(15.0),
+ padding: const EdgeInsets.all(9.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AspectRatio(
+ aspectRatio: 144 / 144,
+ child: ClipRRect(
+ borderRadius: BorderRadius.circular(12.0),
+ child: Image.network("https://mdlaboratories.com/offersdiscounts/images/thumbs/0000162_dermatology-testing.jpeg", fit: BoxFit.fill, height: 180.0, width: 180.0),
+ ),
+ ),
+ SizedBox(height: 6),
+ Text(
+ widget.itemModel.name,
+ maxLines: 1,
+ style: TextStyle(
+ fontSize: 14.0,
+ fontWeight: FontWeight.bold,
+ letterSpacing: -0.56,
+ color: Color(0xff2B353E),
+ ),
+ ),
+ Text("Special discount for all HMG Employees and their first…",
+ maxLines: 2,
+ style: TextStyle(
+ fontSize: 12.0,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.48,
+ color: Color(0xff535353),
+ ),
+ overflow: TextOverflow.ellipsis),
+ if (widget.itemModel.hasDiscountsApplied)
+ Container(
+ margin: const EdgeInsets.only(top: 19.0),
+ child: Text(
+ widget.itemModel.oldPrice.toString() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(
+ fontSize: 9.0,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.36,
+ decoration: TextDecoration.lineThrough,
+ color: Color(0xffA0A0A0),
+ ),
+ ),
+ ),
+ Container(
+ margin: widget.itemModel.hasDiscountsApplied ? const EdgeInsets.only(top: 0.0) : const EdgeInsets.only(top: 19.0),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Container(
+ margin: const EdgeInsets.only(top: 0.0),
+ child: Text(
+ widget.itemModel.price.toString().trim() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, color: Color(0xff2B353E), letterSpacing: -0.48),
+ ),
+ ),
+ RatingBar.readOnly(
+ initialRating: 4.5, // todo ask haroon about parameter for rating
+ size: 18.0,
+ filledColor: Color(0XFFD02127),
+ emptyColor: Color(0XFFD02127),
+ isHalfAllowed: true,
+ halfFilledIcon: Icons.star_half,
+ filledIcon: Icons.star,
+ emptyIcon: Icons.star_border,
+ ),
+ ],
+ ),
+ InkWell(
+ child: SvgPicture.asset("assets/images/new/add_to_cart.svg"),
+ onTap: () {
+ widget.onCartClick(widget.itemModel);
+ },
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+
return InkWell(
onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => OfferAndPackagesDetail(itemModel: widget.itemModel, onCartClick: widget.onCartClick)));
@@ -50,8 +144,15 @@ class PackagesItemCardState extends State {
child: Image.network("https://mdlaboratories.com/offersdiscounts/images/thumbs/0000162_dermatology-testing.jpeg", fit: BoxFit.fill, height: 180.0, width: 180.0),
),
Container(margin: const EdgeInsets.only(top: 8.0), child: Text(widget.itemModel.name, maxLines: 1, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold, letterSpacing: -0.56))),
- Container(width: MediaQuery.of(context).size.width * 0.4, child: Text("Special discount for all HMG Employees and their first…", maxLines: 2, style: TextStyle(fontSize: 10.0, fontWeight: FontWeight.w600, letterSpacing: -0.4, color: CustomColors.textColor), overflow: TextOverflow.clip)),
- if (widget.itemModel.hasDiscountsApplied) Container(margin: const EdgeInsets.only(top: 19.0), child: Text(widget.itemModel.oldPrice.toString() + " " + TranslationBase.of(context).sar, style: TextStyle(fontSize: 9.0, fontWeight: FontWeight.w600, letterSpacing: -0.36, decoration: TextDecoration.lineThrough, color: CustomColors.grey2))),
+ Container(
+ width: MediaQuery.of(context).size.width * 0.4,
+ child: Text("Special discount for all HMG Employees and their first…",
+ maxLines: 2, style: TextStyle(fontSize: 10.0, fontWeight: FontWeight.w600, letterSpacing: -0.4, color: CustomColors.textColor), overflow: TextOverflow.clip)),
+ if (widget.itemModel.hasDiscountsApplied)
+ Container(
+ margin: const EdgeInsets.only(top: 19.0),
+ child: Text(widget.itemModel.oldPrice.toString() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(fontSize: 9.0, fontWeight: FontWeight.w600, letterSpacing: -0.36, decoration: TextDecoration.lineThrough, color: CustomColors.grey2))),
Container(
margin: widget.itemModel.hasDiscountsApplied ? const EdgeInsets.only(top: 0.0) : const EdgeInsets.only(top: 19.0),
child: Row(
@@ -60,7 +161,10 @@ class PackagesItemCardState extends State {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Container(margin: const EdgeInsets.only(top: 0.0), child: Text(widget.itemModel.price.toString().trim() + " " + TranslationBase.of(context).sar, style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, letterSpacing: -0.56))),
+ Container(
+ margin: const EdgeInsets.only(top: 0.0),
+ child: Text(widget.itemModel.price.toString().trim() + " " + TranslationBase.of(context).sar,
+ style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold, letterSpacing: -0.56))),
RatingBar.readOnly(
initialRating: 4.5,
size: 18.0,