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/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 6b4c0f78..cb6be309 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -2,25 +2,25 @@
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 8.0
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ App
+ CFBundleIdentifier
+ io.flutter.flutter.app
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ App
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ MinimumOSVersion
+ 11.0
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 72bd4ac9..ec89ac71 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -15,50 +15,73 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
+ $(MARKETING_VERSION)
CFBundleSignature
????
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ MinimumOSVersion
+ 11.0
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsArbitraryLoadsForMedia
+
+ NSAllowsArbitraryLoadsInWebContent
+
+
+ NSAppleMusicUsageDescription
+ Required by another plugin, Please let us know if you find this functionality anywhere in the app.
+ NSBluetoothAlwaysUsageDescription
+ This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data.
+ NSBluetoothPeripheralUsageDescription
+ This App requires access to Bluetooth to connect blood pressure & blood sugar devices with the app to analyze the data.
NSCalendarsUsageDescription
- We need access to record you event in to calender.
+ This app requires calendar access to set reminders for Virtual & Normal Appointments.
NSCameraUsageDescription
- Need camera access for uploading images
+ This app requires camera access to enable virtual consultation between patient & doctor
+ NSContactsUsageDescription
+ This app requires contacts access to show incoming virtual consultation request.
+ NSFaceIDUsageDescription
+ This app requires Face ID to allow biometric authentication for app login.
+ NSHealthShareUsageDescription
+ This App need access to HealthKit to read heart rate & other data from your smart watch.
+ NSHealthUpdateUsageDescription
+ This App need access to HealthKit to read heart rate & other data from your smart watch.
NSLocationAlwaysAndWhenInUseUsageDescription
- This app will use your location to show cool stuffs near you.
+ This App requires access to your location to show the nearest hospitals & ER Locations from your location.
NSLocationAlwaysUsageDescription
- This app will use your location to show cool stuffs near you.
- NSLocationUsageDescription
- Need location access for updating nearby friends
+ This App requires access to your location to show the nearest hospitals from your location.
NSLocationWhenInUseUsageDescription
- This app will use your location to show cool stuffs near you.
+ This App requires access to your location to show the nearest hospitals from your location.
NSMicrophoneUsageDescription
- Need microphone access for uploading videos
+ This app requires microphone access to enable virtual consultation between patient & doctor
+ NSMotionUsageDescription
+ This app requires motion detection access to function properly.
NSPhotoLibraryUsageDescription
- Need photo library access for uploading images
+ This app requires photo library access to select image as document & upload it.
+ NSRemindersUsageDescription
+ This app requires calendar access to set reminders for Virtual & Normal Appointments.
+ NSSpeechRecognitionUsageDescription
+ This app requires speech recognition access to access voice command features.
+ NSUserActivityTypes
+
UIBackgroundModes
- fetch
+ audio
location
- processing
+ remote-notification
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
Main
- UIRequiredDeviceCapabilities
-
- location-services
- gps
- armv7
-
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 0ec2c7cd..94e7349f 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -556,6 +556,7 @@ const Map localizedValues = {
"shipping": {"en": "Shipping", "ar": " الشحن"},
"shipBy": {"en": "SHIP BY:", "ar": "الشحن عن طريق:"},
"lakumPoints": {"en": "Lakum Points", "ar": "نقاط برنامج لكم"},
+ "useLakumPoints": {"en": "Use Lakum points", "ar": "استخدم برنامج لكم"},
"use": {"en": "USE", "ar": "استخدم"},
"proceedPay": {"en": "PROCEED TO PAY", "ar": "المتابعة للدفع"},
"vat": {"en": "VAT (15%)", "ar": "(15%) القيمة المضافة"},
@@ -822,7 +823,7 @@ const Map localizedValues = {
"body": {"en": "Body Mass", "ar": "كتلة\nالجسم"},
"body_string": {"en": "Body", "ar": "الجسم"},
"face": {"en": "Face", "ar": "وجه"},
- "retouch": {"en": "Retouch", "ar": "تنميق"},
+ "retouch": {"en": "Retouch", "ar": "روتوش"},
"bikini": {"en": "Bikini", "ar": "بيكيني"},
"totalMinutes": {"en": "Total Minutes", "ar": "إجمالي الدقائق"},
"feedback": {"en": "Feedback", "ar": "رأيك يهمنا"},
@@ -1355,7 +1356,7 @@ const Map localizedValues = {
"en": " This service allows you to activate your LAKUM account after registering completed.",
"ar": " تتيح لك هذه الخدمة تفعيل حساب برنامج الولاء لكم بعد اكتمال التسجيل. "
},
- "pointsToTransfer": {"en": "Point's to Transfer:", "ar": "النقاط المراد تحويلها:"},
+ "pointsToTransfer": {"en": "Points to Transfer:", "ar": "النقاط المراد تحويلها:"},
"enterBeneficiaryAccountNo": {"en": "Enter Beneficiary Account No.", "ar": "أدخل رقم حساب المستفيد"},
"confirm-prescription": {"en": "Are you sure !! you want to send this request", "ar": "تاكيد ارسال الطلب؟"},
"you-already-have-order": {"en": "You already have this order! do you want to view it?", "ar": "لديك هذا الطلب بالفعل! هل تريد مشاهدته؟"},
@@ -1694,8 +1695,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 أيام في الأسبوع)"},
@@ -1731,4 +1731,7 @@ const Map localizedValues = {
"gr": {"en": "gr", "ar": "غرام"},
"gramsPerMeal": {"en": "Grams Per Meal", "ar": "عدد الجرامات لكل وجبة"},
"syncSuccess": {"en": "Data Synced Successfully", "ar": "تمت مزامنة البيانات بنجاح"},
+ "points": {"en": "Points", "ar": "نقاط"},
+ "availableBalance": {"en": "Available Balance", "ar": "الرصيد المتوفر"},
+ "ordersDashboard": {"en": "My Orders", "ar": "طلباتي"},
};
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/medical/prescriptions/prescription_details_page.dart b/lib/pages/medical/prescriptions/prescription_details_page.dart
index 479f37c0..3a5b124b 100644
--- a/lib/pages/medical/prescriptions/prescription_details_page.dart
+++ b/lib/pages/medical/prescriptions/prescription_details_page.dart
@@ -296,21 +296,20 @@ class _PrescriptionDetailsPageState extends State {
setCalender(BuildContext context, String eventId, int reminderIndex) async {
CalendarUtils calendarUtils = await CalendarUtils.getInstance();
- DateTime startDate = DateUtil.convertStringToDate(widget.prescriptionReport.startDate);
- DateTime actualDate = DateTime(startDate.year, startDate.month, startDate.day, 8, 0); //Time will start at 8:00 AM from starting date
+ DateTime actualDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 8, 0); //Time will start at 8:00 AM from starting date
if (widget.prescriptionReport?.frequencyNumber == null) widget.prescriptionReport.frequencyNumber = 1; //Some time frequency number is null so by default will be 2
+ int remainingDays = widget.prescriptionReport.days - (Jiffy(DateTime.now()).diff(DateUtil.convertStringToDate(widget.prescriptionReport.orderDate), Units.DAY));
+
GifLoaderDialogUtils.showMyDialog(context);
- for (int i = 0; i < widget.prescriptionReport.days; i++) {
+ for (int i = 0; i < remainingDays; i++) {
//event for number of days.
for (int j = 0; j < widget.prescriptionReport.frequencyNumber ?? 1; j++) {
// event for number of times per day.
-
if (j != 0) {
actualDate.add(new Duration(hours: 8)); // 8 hours addition for daily dose.
}
-
//Time subtraction from actual reminder time. like before 30, or 1 hour.
if (reminderIndex == 0) {
// Before 30 mints
diff --git a/lib/pages/medical/prescriptions/prescription_items_page.dart b/lib/pages/medical/prescriptions/prescription_items_page.dart
index 0e627a95..a9be08d2 100644
--- a/lib/pages/medical/prescriptions/prescription_items_page.dart
+++ b/lib/pages/medical/prescriptions/prescription_items_page.dart
@@ -243,6 +243,8 @@ class PrescriptionItemsPage extends StatelessWidget {
doseDailyQuantity: model.prescriptionReportEnhList[index].doseDailyQuantity,
days: model.prescriptionReportEnhList[index].days,
itemID: model.prescriptionReportEnhList[index].itemID,
+ orderDate: model.prescriptionReportEnhList[index].orderDate,
+ startDate: model.prescriptionReportEnhList[index].startDate,
remarks: model.prescriptionReportEnhList[index].remarks);
Navigator.push(
context,
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/cart-page/cart-order-page.dart b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart
index ce7b5f94..df44c706 100644
--- a/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart
+++ b/lib/pages/pharmacies/screens/cart-page/cart-order-page.dart
@@ -1,15 +1,18 @@
+import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductOrderItem.dart';
+import 'package:diplomaticquarterapp/pages/pharmacy/order/Order.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/buttons/GestureIconButton.dart';
+import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
@@ -28,10 +31,13 @@ class CartOrderPage extends StatefulWidget {
class _CartOrderPageState extends State {
bool isLoading = true;
+ String customerId;
+ String customerGUID;
@override
void initState() {
super.initState();
+ getCustomer();
getData();
}
@@ -224,10 +230,19 @@ class _CartOrderPageState extends State {
padding: const EdgeInsets.all(8.0),
child: Text(
TranslationBase.of(context).noData,
-// 'There is no data',
style: TextStyle(fontSize: 30),
),
- )
+ ),
+ Padding(
+ padding: const EdgeInsets.fromLTRB(60.0, 8.0, 60.0, 0.0),
+ child: DefaultButton(
+ TranslationBase.of(context).ordersDashboard,
+ () {
+ Navigator.push(context, FadePage(page: OrderPage(customerID: customerId, customerGUID: customerGUID)));
+ },
+ color: Colors.green,
+ ),
+ ),
],
),
),
@@ -240,6 +255,20 @@ class _CartOrderPageState extends State {
);
}
+ getCustomer() async {
+ String custID;
+ String custGUID;
+ custID = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
+ custGUID = await sharedPref.getObject(PHARMACY_CUSTOMER_GUID);
+ setState(() {
+ customerId = custID;
+ customerGUID = custGUID;
+ });
+ print("customer Id is" + customerId);
+ print("customer GUID is" + customerGUID);
+ return customerId;
+ }
+
void getData() async {
await Provider.of(context, listen: false).getShoppingCart();
setState(() {
diff --git a/lib/pages/pharmacies/screens/cart-page/lakum_widget.dart b/lib/pages/pharmacies/screens/cart-page/lakum_widget.dart
index 89db5d89..5d48fe1f 100644
--- a/lib/pages/pharmacies/screens/cart-page/lakum_widget.dart
+++ b/lib/pages/pharmacies/screens/cart-page/lakum_widget.dart
@@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/OrderPreviewViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
+import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
@@ -16,6 +17,7 @@ class LakumWidget extends StatefulWidget {
class _LakumWidgetState extends State {
TextEditingController _pointsController = new TextEditingController();
+ bool useLakumWidgets = false;
@override
Widget build(BuildContext context) {
@@ -27,29 +29,30 @@ class _LakumWidgetState extends State {
padding: EdgeInsets.symmetric(vertical: 12, horizontal: 12),
child: Row(
children: [
- Image.asset(
- "assets/images/pharmacy_module/lakum/lakum_checkout.png",
- width: 30.0,
- fit: BoxFit.scaleDown,
- ),
- Container(
- decoration: BoxDecoration(color: Color(0x99ffffff)),
- padding: const EdgeInsets.symmetric(horizontal: 8),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Texts(
- "${TranslationBase.of(context).lakumPoints}",
- fontSize: 12,
- fontWeight: FontWeight.bold,
- ),
- Texts(
- "${widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount}",
- fontSize: 12,
- fontWeight: FontWeight.normal,
+ Row(
+ children: [
+ SizedBox(
+ height: 24.0,
+ width: 24.0,
+ child: Checkbox(
+ activeColor: CustomColors.green,
+ value: useLakumWidgets,
+ onChanged: (bool value) {
+ setState(() {
+ useLakumWidgets = value;
+ print(useLakumWidgets);
+ });
+ },
),
- ],
- ),
+ ),
+ Padding(
+ padding: const EdgeInsets.only(left: 8.0, right: 8.0),
+ child: Text(
+ TranslationBase.of(context).useLakumPoints +
+ " (${widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalance.toString() + " " + TranslationBase.of(context).points})",
+ style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.w600, letterSpacing: -0.56)),
+ ),
+ ],
),
Expanded(
child: Container(
@@ -58,71 +61,93 @@ class _LakumWidgetState extends State {
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
- Texts(
- "${TranslationBase.of(context).riyal}",
- fontSize: 12,
- fontWeight: FontWeight.bold,
- ),
Container(
- margin: projectProvider.isArabic ? EdgeInsets.only(right: 4) : EdgeInsets.only(left: 4),
- width: 60,
- height: 50,
- child: TextField(
- decoration: InputDecoration(
- border: OutlineInputBorder(
- borderSide: BorderSide(color: Colors.black, width: 0.2),
- gapPadding: 0,
- borderRadius: projectProvider.isArabic
- ? BorderRadius.only(topRight: Radius.circular(8), bottomRight: Radius.circular(8))
- : BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)),
+ decoration: BoxDecoration(color: Color(0x99ffffff)),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Texts(
+ "${TranslationBase.of(context).availableBalance}",
+ fontSize: 12,
+ fontWeight: FontWeight.bold,
),
- disabledBorder: OutlineInputBorder(
- borderSide: BorderSide(color: Colors.black, width: 0.4),
- gapPadding: 0,
- borderRadius: BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)),
+ Text(
+ "${TranslationBase.of(context).sar + " " + widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount.toString()}",
+ style: TextStyle(fontSize: 12.0, fontWeight: FontWeight.w600, letterSpacing: -0.56)
),
- ),
- controller: _pointsController,
- keyboardType: TextInputType.number,
- style: TextStyle(
- fontSize: 14,
- color: widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount > 0 ? Colors.black : Colors.grey,
- ),
- enabled: widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount == 0 ? false : true,
- onChanged: (val) {
- var value = int.tryParse(val);
- if (value != null && value <= widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount) {
- widget.model.paymentCheckoutData.usedLakumPoints = value;
- } else {
- widget.model.paymentCheckoutData.usedLakumPoints = 0;
- }
- _pointsController.text = "${widget.model.paymentCheckoutData.usedLakumPoints}";
- },
- ),
- ),
- Container(
- height: 50,
- padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12),
- decoration: new BoxDecoration(
- color: Color(0xff3666E0),
- shape: BoxShape.rectangle,
- borderRadius: projectProvider.isArabic
- ? BorderRadius.only(topLeft: Radius.circular(6), bottomLeft: Radius.circular(6))
- : BorderRadius.only(topRight: Radius.circular(6), bottomRight: Radius.circular(6)),
- border: Border.fromBorderSide(BorderSide(
- color: Color(0xff3666E0),
- width: 0.8,
- )),
- ),
- child: Texts(
- "${TranslationBase.of(context).use}",
- fontSize: 12,
- color: Colors.white,
- fontWeight: FontWeight.bold,
+ ],
),
),
],
),
+ // child: Row(
+ // mainAxisAlignment: MainAxisAlignment.end,
+ // children: [
+ // Texts(
+ // "${TranslationBase.of(context).riyal}",
+ // fontSize: 12,
+ // fontWeight: FontWeight.bold,
+ // ),
+ // Container(
+ // margin: projectProvider.isArabic ? EdgeInsets.only(right: 4) : EdgeInsets.only(left: 4),
+ // width: 60,
+ // height: 50,
+ // child: TextField(
+ // decoration: InputDecoration(
+ // border: OutlineInputBorder(
+ // borderSide: BorderSide(color: Colors.black, width: 0.2),
+ // gapPadding: 0,
+ // borderRadius: projectProvider.isArabic
+ // ? BorderRadius.only(topRight: Radius.circular(8), bottomRight: Radius.circular(8))
+ // : BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)),
+ // ),
+ // disabledBorder: OutlineInputBorder(
+ // borderSide: BorderSide(color: Colors.black, width: 0.4),
+ // gapPadding: 0,
+ // borderRadius: BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)),
+ // ),
+ // ),
+ // controller: _pointsController,
+ // keyboardType: TextInputType.number,
+ // style: TextStyle(
+ // fontSize: 14,
+ // color: widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount > 0 ? Colors.black : Colors.grey,
+ // ),
+ // enabled: widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount == 0 ? false : true,
+ // onChanged: (val) {
+ // var value = int.tryParse(val);
+ // if (value != null && value <= widget.model.paymentCheckoutData.lacumInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount) {
+ // widget.model.paymentCheckoutData.usedLakumPoints = value;
+ // } else {
+ // widget.model.paymentCheckoutData.usedLakumPoints = 0;
+ // }
+ // _pointsController.text = "${widget.model.paymentCheckoutData.usedLakumPoints}";
+ // },
+ // ),
+ // ),
+ // Container(
+ // height: 50,
+ // padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12),
+ // decoration: new BoxDecoration(
+ // color: Color(0xff3666E0),
+ // shape: BoxShape.rectangle,
+ // borderRadius: projectProvider.isArabic
+ // ? BorderRadius.only(topLeft: Radius.circular(6), bottomLeft: Radius.circular(6))
+ // : BorderRadius.only(topRight: Radius.circular(6), bottomRight: Radius.circular(6)),
+ // border: Border.fromBorderSide(BorderSide(
+ // color: Color(0xff3666E0),
+ // width: 0.8,
+ // )),
+ // ),
+ // child: Texts(
+ // "${TranslationBase.of(context).use}",
+ // fontSize: 12,
+ // color: Colors.white,
+ // fontWeight: FontWeight.bold,
+ // ),
+ // ),
+ // ],
+ // ),
),
),
],
diff --git a/lib/pages/pharmacies/screens/lakum-main-page.dart b/lib/pages/pharmacies/screens/lakum-main-page.dart
index 20257b18..874f43e5 100644
--- a/lib/pages/pharmacies/screens/lakum-main-page.dart
+++ b/lib/pages/pharmacies/screens/lakum-main-page.dart
@@ -28,11 +28,13 @@ class LakumMainPage extends StatelessWidget {
return BaseView(
onModelReady: (model) async {
await model.getLacumData();
- if (model.lacumInformation.yahalaAccountNo == 0 || model.lacumInformation.yahalaAccountNo == null) {
+ if (model.lacumInformation.yahalaAccountNo == 0 ||
+ model.lacumInformation.yahalaAccountNo == null) {
navigateToLakumRegister(context);
} else {
if (model.lacumInformation.status == "Hold") {
- Navigator.pushReplacement(context, FadePage(page: LakumActivationVidaPage()));
+ Navigator.pushReplacement(
+ context, FadePage(page: LakumActivationVidaPage()));
}
}
},
@@ -49,7 +51,10 @@ class LakumMainPage extends StatelessWidget {
body: Container(
width: double.infinity,
child: SingleChildScrollView(
- child: (model.lacumGroupInformation != null && model.lacumGroupInformation.lakumInquiryInformationObjVersion != null)
+ child: (model.lacumGroupInformation != null &&
+ model.lacumGroupInformation
+ .lakumInquiryInformationObjVersion !=
+ null)
? Column(
children: [
Stack(
@@ -63,8 +68,11 @@ class LakumMainPage extends StatelessWidget {
SizedBox(
height: mediaQuery.size.height * 0.02,
),
- Container(width: mediaQuery.size.width * 1,
- height: mediaQuery.size.width * .6, child: LakumBannerWidget(model, mediaQuery, true)),
+ Container(
+ width: mediaQuery.size.width * 1,
+ height: mediaQuery.size.width * .6,
+ child: LakumBannerWidget(
+ model, mediaQuery, true)),
],
)
],
@@ -78,17 +86,43 @@ class LakumMainPage extends StatelessWidget {
),
Container(
height: 100,
- margin: EdgeInsets.symmetric(horizontal: 16, vertical: 12.0),
+ margin: EdgeInsets.symmetric(
+ horizontal: 16, vertical: 12.0),
child: ListView(
scrollDirection: Axis.horizontal,
children: [
- LacumPointsWidget(mediaQuery, 1, TranslationBase.of(context).balance, model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalance, null),
+ LacumPointsWidget(
+ mediaQuery,
+ 1,
+ TranslationBase.of(context).balance,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .pointsBalanceAmount,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .pointsBalance,
+ null),
SizedBox(
width: 8,
),
- LacumPointsWidget(mediaQuery, 2, TranslationBase.of(context).gained, model.lacumGroupInformation.lakumInquiryInformationObjVersion.pointsBalanceAmount,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.gainedPoints, model.lacumGroupInformation.lakumInquiryInformationObjVersion.gainedPointsAmountPerYear),
+ LacumPointsWidget(
+ mediaQuery,
+ 2,
+ TranslationBase.of(context).gained,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .pointsBalanceAmount,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .gainedPoints,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .gainedPointsAmountPerYear),
SizedBox(
width: 8,
),
@@ -96,16 +130,40 @@ class LakumMainPage extends StatelessWidget {
mediaQuery,
3,
TranslationBase.of(context).consumed,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount != null
- ? int.parse(model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmount)
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .consumedPointsAmount !=
+ null
+ ? int.parse(model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .consumedPointsAmount)
: 0,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPoints,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.consumedPointsAmountPerYear),
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .consumedPoints,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .consumedPointsAmountPerYear),
SizedBox(
width: 8,
),
- LacumPointsWidget(mediaQuery, 4, TranslationBase.of(context).transferred, 0, model.lacumGroupInformation.lakumInquiryInformationObjVersion.transferPoints,
- model.lacumGroupInformation.lakumInquiryInformationObjVersion.transferPointsAmountPerYear),
+ LacumPointsWidget(
+ mediaQuery,
+ 4,
+ TranslationBase.of(context).transferred,
+ 0,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .transferPoints,
+ model
+ .lacumGroupInformation
+ .lakumInquiryInformationObjVersion
+ .transferPointsAmountPerYear),
],
),
),
@@ -129,7 +187,8 @@ class LakumMainPage extends StatelessWidget {
),
),
Container(
- margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
+ margin:
+ EdgeInsets.symmetric(vertical: 16, horizontal: 8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -165,39 +224,45 @@ class LakumMainPage extends StatelessWidget {
// fontSize: 14,
// ),
Container(
- margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
- child: Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
- Row(
+ margin:
+ EdgeInsets.symmetric(vertical: 16, horizontal: 8),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Image.asset(
- "assets/images/pharmacy_module/lakum/waiting_gained_icon.png",
- fit: BoxFit.fill,
- width: 20,
- height: 25,
- ),
- Padding(
- padding: EdgeInsets.symmetric(horizontal: 8),
- child: Texts(
- TranslationBase.of(context).Waitinggained,
+ Row(
+ children: [
+ Image.asset(
+ "assets/images/pharmacy_module/lakum/waiting_gained_icon.png",
+ fit: BoxFit.fill,
+ width: 20,
+ height: 25,
+ ),
+ Padding(
+ padding:
+ EdgeInsets.symmetric(horizontal: 8),
+ child: Texts(
+ TranslationBase.of(context)
+ .Waitinggained,
// "Waiting gained",
- fontSize: 14,
- ),
- )
- ],
- ),
- Texts(
- "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.waitingPoints} ${TranslationBase.of(context).lakumPoint}",
- fontWeight: FontWeight.bold,
- fontSize: 14,
- ),
- ])),
+ fontSize: 14,
+ ),
+ )
+ ],
+ ),
+ Texts(
+ "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.waitingPoints} ${TranslationBase.of(context).lakumPoint}",
+ fontWeight: FontWeight.bold,
+ fontSize: 14,
+ ),
+ ])),
// Texts(
// "${model.lacumGroupInformation.lakumInquiryInformationObjVersion.waitingPoints} Points",
// fontWeight: FontWeight.bold,
// fontSize: 14,
// ),
Container(
- margin: EdgeInsets.symmetric(vertical: 16, horizontal: 8),
+ margin:
+ EdgeInsets.symmetric(vertical: 16, horizontal: 8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@@ -250,7 +315,11 @@ class LakumMainPage extends StatelessWidget {
}
navigateToLakumRegister(BuildContext context) {
- Navigator.pushReplacement(context, FadePage(page: LakumRegistrationPage(projectViewModel.user.patientIdentificationNo)));
+ Navigator.pushReplacement(
+ context,
+ FadePage(
+ page: LakumRegistrationPage(
+ projectViewModel.user.patientIdentificationNo)));
}
}
@@ -260,7 +329,12 @@ List _buildAppBarICons(BuildContext context, LacumViewModel model) {
icon: Icon(Icons.settings),
color: Colors.white,
onPressed: () {
- Navigator.push(context, FadePage(page: LakumSettingPage(model.lacumInformation, model.lacumGroupInformation))).then((result) => {model.getLacumGroupData()});
+ Navigator.push(
+ context,
+ FadePage(
+ page: LakumSettingPage(
+ model.lacumInformation, model.lacumGroupInformation)))
+ .then((result) => {model.getLacumGroupData()});
},
),
];
@@ -282,7 +356,9 @@ class LakumHomeButtons extends StatelessWidget {
child: InkWell(
onTap: () {
print("Account activate click");
- Navigator.push(context, FadePage(page: LakumActivationVidaPage())).then((result) => {model.getLacumGroupData()});
+ Navigator.push(
+ context, FadePage(page: LakumActivationVidaPage()))
+ .then((result) => {model.getLacumGroupData()});
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8),
@@ -325,7 +401,12 @@ class LakumHomeButtons extends StatelessWidget {
child: InkWell(
onTap: () {
print("Lacum transfer click");
- Navigator.push(context, FadePage(page: LacumTransferPage(model.lacumInformation, model.lacumGroupInformation))).then((result) => {model.getLacumGroupData()});
+ Navigator.push(
+ context,
+ FadePage(
+ page: LacumTransferPage(model.lacumInformation,
+ model.lacumGroupInformation)))
+ .then((result) => {model.getLacumGroupData()});
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8),
@@ -342,7 +423,7 @@ class LakumHomeButtons extends StatelessWidget {
children: [
Image.asset(
"assets/images/pharmacy_module/lakum/akum_transfer.png",
- // "assets/images/pharmacy_module/lakum/Lakum_transfer_icon.png",
+ // "assets/images/pharmacy_module/lakum/Lakum_transfer_icon.png",
fit: BoxFit.fill,
width: 35,
height: 30,
@@ -377,11 +458,12 @@ class LacumPointsWidget extends StatelessWidget {
Color titleColor;
final List pointsAmountPerYear;
- LacumPointsWidget(this.mediaQuery, this.pointType, this.title, this.riyal, this.point, this.pointsAmountPerYear) {
+ LacumPointsWidget(this.mediaQuery, this.pointType, this.title, this.riyal,
+ this.point, this.pointsAmountPerYear) {
if (pointType == 1) {
titleColor = Color(0xffefefef);
} else if (pointType == 2) {
- // titleColor = Color(0xff004bcc);
+ // titleColor = Color(0xff004bcc);
titleColor = Color(0xff339933);
} else if (pointType == 3) {
titleColor = Colors.grey;
@@ -396,16 +478,18 @@ class LacumPointsWidget extends StatelessWidget {
onTap: () {
if (pointType != 1) {
if (pointsAmountPerYear != null && pointsAmountPerYear.length > 0) {
- Navigator.push(context, FadePage(page: LakumPointsYearPage(pointsAmountPerYear)));
+ Navigator.push(context,
+ FadePage(page: LakumPointsYearPage(pointsAmountPerYear)));
} else {
- AppToast.showErrorToast(message: TranslationBase.of(context).lakumMsg);
+ AppToast.showErrorToast(
+ message: TranslationBase.of(context).lakumMsg);
// show snackBar No Details Points are there
}
}
},
child: Container(
width: mediaQuery.size.width / 2 - 25,
- padding: EdgeInsets.only(top: 12, left: 8, right: 8, bottom: 2),
+ padding: EdgeInsets.only(top: 12, left: 8, right: 8, bottom: 8),
decoration: BoxDecoration(
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(8),
@@ -417,9 +501,9 @@ class LacumPointsWidget extends StatelessWidget {
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Expanded(
+ Container(
+ margin: EdgeInsets.only(bottom: 10.0),
child: Column(
children: [
Row(
@@ -445,15 +529,15 @@ class LacumPointsWidget extends StatelessWidget {
),
Expanded(
child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
if (pointType != 4)
Expanded(
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ // crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase.of(context).RIYAL,
-// "RIYAL",
+ TranslationBase.of(context).sar,
fontSize: 13,
fontWeight: FontWeight.bold,
color: pointType == 1 ? Colors.white : Colors.black,
@@ -481,11 +565,10 @@ class LacumPointsWidget extends StatelessWidget {
child: Container(
margin: EdgeInsets.only(left: 8, right: 8),
child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
+ // crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
- TranslationBase.of(context).point,
-// "POINT",
+ TranslationBase.of(context).points,
fontSize: 12,
fontWeight: FontWeight.bold,
color: pointType == 1 ? Colors.white : Colors.black,
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/pages/pharmacy/order/Order.dart b/lib/pages/pharmacy/order/Order.dart
index 40725423..9eda1004 100644
--- a/lib/pages/pharmacy/order/Order.dart
+++ b/lib/pages/pharmacy/order/Order.dart
@@ -859,6 +859,7 @@ class _OrderPageState extends State with SingleTickerProviderStateMix
pendingOrderList.add(model.orders[i]);
}
}
+ _tabController.animateTo(2);
return Container(
child: pendingOrderList.length != 0
? SingleChildScrollView(
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 98f43101..4a5c8a5d 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];
@@ -2795,6 +2795,10 @@ class TranslationBase {
String get reminderCancelSuccess => localizedValues["reminderCancelSuccess"][locale.languageCode];
String get syncSuccess => localizedValues["syncSuccess"][locale.languageCode];
+ String get useLakumPoints => localizedValues["useLakumPoints"][locale.languageCode];
+ String get points => localizedValues["points"][locale.languageCode];
+ String get availableBalance => localizedValues["availableBalance"][locale.languageCode];
+ String get ordersDashboard => localizedValues["ordersDashboard"][locale.languageCode];
}
class TranslationBaseDelegate extends LocalizationsDelegate {
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,