diff --git a/assets/images/new/body_parts/female/abdomin.svg b/assets/images/new/body_parts/female/abdomin.svg
new file mode 100644
index 00000000..cc1dd1d0
--- /dev/null
+++ b/assets/images/new/body_parts/female/abdomin.svg
@@ -0,0 +1,345 @@
+
diff --git a/assets/images/new/body_parts/female/anal.svg b/assets/images/new/body_parts/female/anal.svg
new file mode 100644
index 00000000..96c9734d
--- /dev/null
+++ b/assets/images/new/body_parts/female/anal.svg
@@ -0,0 +1,236 @@
+
diff --git a/assets/images/new/body_parts/female/axilla.svg b/assets/images/new/body_parts/female/axilla.svg
new file mode 100644
index 00000000..257b1c08
--- /dev/null
+++ b/assets/images/new/body_parts/female/axilla.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/back.svg b/assets/images/new/body_parts/female/back.svg
new file mode 100644
index 00000000..96eba049
--- /dev/null
+++ b/assets/images/new/body_parts/female/back.svg
@@ -0,0 +1,236 @@
+
diff --git a/assets/images/new/body_parts/female/bikini.svg b/assets/images/new/body_parts/female/bikini.svg
new file mode 100644
index 00000000..24892c80
--- /dev/null
+++ b/assets/images/new/body_parts/female/bikini.svg
@@ -0,0 +1,345 @@
+
diff --git a/assets/images/new/body_parts/female/bikini_line.svg b/assets/images/new/body_parts/female/bikini_line.svg
new file mode 100644
index 00000000..f1f94b7f
--- /dev/null
+++ b/assets/images/new/body_parts/female/bikini_line.svg
@@ -0,0 +1,345 @@
+
diff --git a/assets/images/new/body_parts/female/buttocks.svg b/assets/images/new/body_parts/female/buttocks.svg
new file mode 100644
index 00000000..59cd0071
--- /dev/null
+++ b/assets/images/new/body_parts/female/buttocks.svg
@@ -0,0 +1,236 @@
+
diff --git a/assets/images/new/body_parts/female/cheeks.svg b/assets/images/new/body_parts/female/cheeks.svg
new file mode 100644
index 00000000..6305ce65
--- /dev/null
+++ b/assets/images/new/body_parts/female/cheeks.svg
@@ -0,0 +1,130 @@
+
diff --git a/assets/images/new/body_parts/female/chest.svg b/assets/images/new/body_parts/female/chest.svg
new file mode 100644
index 00000000..3b681f90
--- /dev/null
+++ b/assets/images/new/body_parts/female/chest.svg
@@ -0,0 +1,345 @@
+
diff --git a/assets/images/new/body_parts/female/chest_line.svg b/assets/images/new/body_parts/female/chest_line.svg
new file mode 100644
index 00000000..dc4f8b25
--- /dev/null
+++ b/assets/images/new/body_parts/female/chest_line.svg
@@ -0,0 +1,345 @@
+
diff --git a/assets/images/new/body_parts/female/chin.svg b/assets/images/new/body_parts/female/chin.svg
new file mode 100644
index 00000000..37da45b4
--- /dev/null
+++ b/assets/images/new/body_parts/female/chin.svg
@@ -0,0 +1,129 @@
+
diff --git a/assets/images/new/body_parts/female/ears.svg b/assets/images/new/body_parts/female/ears.svg
new file mode 100644
index 00000000..758a69e6
--- /dev/null
+++ b/assets/images/new/body_parts/female/ears.svg
@@ -0,0 +1,130 @@
+
diff --git a/assets/images/new/body_parts/female/eyebrows.svg b/assets/images/new/body_parts/female/eyebrows.svg
new file mode 100644
index 00000000..9657daa7
--- /dev/null
+++ b/assets/images/new/body_parts/female/eyebrows.svg
@@ -0,0 +1,130 @@
+
diff --git a/assets/images/new/body_parts/female/full_leg.svg b/assets/images/new/body_parts/female/full_leg.svg
new file mode 100644
index 00000000..e1a5e46d
--- /dev/null
+++ b/assets/images/new/body_parts/female/full_leg.svg
@@ -0,0 +1,348 @@
+
diff --git a/assets/images/new/body_parts/female/full_neck.svg b/assets/images/new/body_parts/female/full_neck.svg
new file mode 100644
index 00000000..f73f07f8
--- /dev/null
+++ b/assets/images/new/body_parts/female/full_neck.svg
@@ -0,0 +1,129 @@
+
diff --git a/assets/images/new/body_parts/female/half_neck.svg b/assets/images/new/body_parts/female/half_neck.svg
new file mode 100644
index 00000000..78e4cfab
--- /dev/null
+++ b/assets/images/new/body_parts/female/half_neck.svg
@@ -0,0 +1,129 @@
+
diff --git a/assets/images/new/body_parts/female/hydra_facial.svg b/assets/images/new/body_parts/female/hydra_facial.svg
new file mode 100644
index 00000000..6a468211
--- /dev/null
+++ b/assets/images/new/body_parts/female/hydra_facial.svg
@@ -0,0 +1,128 @@
+
diff --git a/assets/images/new/body_parts/female/lower_arm.svg b/assets/images/new/body_parts/female/lower_arm.svg
new file mode 100644
index 00000000..6d5d2f39
--- /dev/null
+++ b/assets/images/new/body_parts/female/lower_arm.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/lower_leg.svg b/assets/images/new/body_parts/female/lower_leg.svg
new file mode 100644
index 00000000..4961af4b
--- /dev/null
+++ b/assets/images/new/body_parts/female/lower_leg.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/shoulder.svg b/assets/images/new/body_parts/female/shoulder.svg
new file mode 100644
index 00000000..ce611e29
--- /dev/null
+++ b/assets/images/new/body_parts/female/shoulder.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/side_burn.svg b/assets/images/new/body_parts/female/side_burn.svg
new file mode 100644
index 00000000..123216e7
--- /dev/null
+++ b/assets/images/new/body_parts/female/side_burn.svg
@@ -0,0 +1,130 @@
+
diff --git a/assets/images/new/body_parts/female/upper_arm.svg b/assets/images/new/body_parts/female/upper_arm.svg
new file mode 100644
index 00000000..ec126ffd
--- /dev/null
+++ b/assets/images/new/body_parts/female/upper_arm.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/upper_leg.svg b/assets/images/new/body_parts/female/upper_leg.svg
new file mode 100644
index 00000000..b1fd3a95
--- /dev/null
+++ b/assets/images/new/body_parts/female/upper_leg.svg
@@ -0,0 +1,346 @@
+
diff --git a/assets/images/new/body_parts/female/upper_lips.svg b/assets/images/new/body_parts/female/upper_lips.svg
new file mode 100644
index 00000000..72043376
--- /dev/null
+++ b/assets/images/new/body_parts/female/upper_lips.svg
@@ -0,0 +1,129 @@
+
diff --git a/assets/images/new/body_parts/male/abdomin.svg b/assets/images/new/body_parts/male/abdomin.svg
new file mode 100644
index 00000000..82e2d556
--- /dev/null
+++ b/assets/images/new/body_parts/male/abdomin.svg
@@ -0,0 +1,185 @@
+
diff --git a/assets/images/new/body_parts/male/axilla.svg b/assets/images/new/body_parts/male/axilla.svg
new file mode 100644
index 00000000..85abbfda
--- /dev/null
+++ b/assets/images/new/body_parts/male/axilla.svg
@@ -0,0 +1,186 @@
+
diff --git a/assets/images/new/body_parts/male/back.svg b/assets/images/new/body_parts/male/back.svg
new file mode 100644
index 00000000..7d9aeb46
--- /dev/null
+++ b/assets/images/new/body_parts/male/back.svg
@@ -0,0 +1,188 @@
+
diff --git a/assets/images/new/body_parts/male/bikini.svg b/assets/images/new/body_parts/male/bikini.svg
new file mode 100644
index 00000000..1c545916
--- /dev/null
+++ b/assets/images/new/body_parts/male/bikini.svg
@@ -0,0 +1,185 @@
+
diff --git a/assets/images/new/body_parts/male/bikini_line.svg b/assets/images/new/body_parts/male/bikini_line.svg
new file mode 100644
index 00000000..7fdc51d1
--- /dev/null
+++ b/assets/images/new/body_parts/male/bikini_line.svg
@@ -0,0 +1,185 @@
+
diff --git a/assets/images/new/body_parts/male/cheek.svg b/assets/images/new/body_parts/male/cheek.svg
new file mode 100644
index 00000000..984a59f8
--- /dev/null
+++ b/assets/images/new/body_parts/male/cheek.svg
@@ -0,0 +1,87 @@
+
diff --git a/assets/images/new/body_parts/male/chest.svg b/assets/images/new/body_parts/male/chest.svg
new file mode 100644
index 00000000..85a761fe
--- /dev/null
+++ b/assets/images/new/body_parts/male/chest.svg
@@ -0,0 +1,185 @@
+
diff --git a/assets/images/new/body_parts/male/chest_line.svg b/assets/images/new/body_parts/male/chest_line.svg
new file mode 100644
index 00000000..806ddb0c
--- /dev/null
+++ b/assets/images/new/body_parts/male/chest_line.svg
@@ -0,0 +1,185 @@
+
diff --git a/assets/images/new/body_parts/male/chin.svg b/assets/images/new/body_parts/male/chin.svg
new file mode 100644
index 00000000..9fdee93e
--- /dev/null
+++ b/assets/images/new/body_parts/male/chin.svg
@@ -0,0 +1,86 @@
+
diff --git a/assets/images/new/body_parts/male/ears.svg b/assets/images/new/body_parts/male/ears.svg
new file mode 100644
index 00000000..1c9600c3
--- /dev/null
+++ b/assets/images/new/body_parts/male/ears.svg
@@ -0,0 +1,87 @@
+
diff --git a/assets/images/new/body_parts/male/eyebrows.svg b/assets/images/new/body_parts/male/eyebrows.svg
new file mode 100644
index 00000000..ea385230
--- /dev/null
+++ b/assets/images/new/body_parts/male/eyebrows.svg
@@ -0,0 +1,87 @@
+
diff --git a/assets/images/new/body_parts/male/full_leg.svg b/assets/images/new/body_parts/male/full_leg.svg
new file mode 100644
index 00000000..b5755167
--- /dev/null
+++ b/assets/images/new/body_parts/male/full_leg.svg
@@ -0,0 +1,230 @@
+
diff --git a/assets/images/new/body_parts/male/full_neck.svg b/assets/images/new/body_parts/male/full_neck.svg
new file mode 100644
index 00000000..43183598
--- /dev/null
+++ b/assets/images/new/body_parts/male/full_neck.svg
@@ -0,0 +1,86 @@
+
diff --git a/assets/images/new/body_parts/male/half_neck.svg b/assets/images/new/body_parts/male/half_neck.svg
new file mode 100644
index 00000000..4e57b51c
--- /dev/null
+++ b/assets/images/new/body_parts/male/half_neck.svg
@@ -0,0 +1,86 @@
+
diff --git a/assets/images/new/body_parts/male/hydra_facial.svg b/assets/images/new/body_parts/male/hydra_facial.svg
new file mode 100644
index 00000000..10516304
--- /dev/null
+++ b/assets/images/new/body_parts/male/hydra_facial.svg
@@ -0,0 +1,85 @@
+
diff --git a/assets/images/new/body_parts/male/lower_arm.svg b/assets/images/new/body_parts/male/lower_arm.svg
new file mode 100644
index 00000000..c8dbf48d
--- /dev/null
+++ b/assets/images/new/body_parts/male/lower_arm.svg
@@ -0,0 +1,312 @@
+
diff --git a/assets/images/new/body_parts/male/lower_leg.svg b/assets/images/new/body_parts/male/lower_leg.svg
new file mode 100644
index 00000000..091c29a4
--- /dev/null
+++ b/assets/images/new/body_parts/male/lower_leg.svg
@@ -0,0 +1,228 @@
+
diff --git a/assets/images/new/body_parts/male/shoulders.svg b/assets/images/new/body_parts/male/shoulders.svg
new file mode 100644
index 00000000..bd6cac52
--- /dev/null
+++ b/assets/images/new/body_parts/male/shoulders.svg
@@ -0,0 +1,312 @@
+
diff --git a/assets/images/new/body_parts/male/side_burn.svg b/assets/images/new/body_parts/male/side_burn.svg
new file mode 100644
index 00000000..156b30f1
--- /dev/null
+++ b/assets/images/new/body_parts/male/side_burn.svg
@@ -0,0 +1,87 @@
+
diff --git a/assets/images/new/body_parts/male/upper_arm.svg b/assets/images/new/body_parts/male/upper_arm.svg
new file mode 100644
index 00000000..7d959a0d
--- /dev/null
+++ b/assets/images/new/body_parts/male/upper_arm.svg
@@ -0,0 +1,186 @@
+
diff --git a/assets/images/new/body_parts/male/upper_leg.svg b/assets/images/new/body_parts/male/upper_leg.svg
new file mode 100644
index 00000000..342cfd84
--- /dev/null
+++ b/assets/images/new/body_parts/male/upper_leg.svg
@@ -0,0 +1,210 @@
+
diff --git a/assets/images/new/body_parts/male/upper_lips.svg b/assets/images/new/body_parts/male/upper_lips.svg
new file mode 100644
index 00000000..b7ae6e0f
--- /dev/null
+++ b/assets/images/new/body_parts/male/upper_lips.svg
@@ -0,0 +1,86 @@
+
diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart
index 72c06137..1adb5839 100644
--- a/lib/config/localized_values.dart
+++ b/lib/config/localized_values.dart
@@ -64,6 +64,7 @@ const Map localizedValues = {
'appointmentSuccess': {'en': 'Appointment is successfully booked', 'ar': 'تم حجز الموعد بنجاح'},
'docQualifications': {'en': 'Doctor Qualifications', 'ar': 'مؤهلات الطبيب'},
'pressAgain': {'en': 'Press again to exit the app', 'ar': 'اضغط مرة أخرى للخروج من التطبيق'},
+ 'laserMaxLimitReach': {'en': "Maximum limit is 90 minutes", 'ar': "الحد الأقصى هو 90 دقيقة"},
'confirmAppoHeading': {'en': 'Kindly review your Appointment', 'ar': 'يرجى تأكيد موعدك'},
'patientInfo': {'en': 'Patient Information', 'ar': 'معلومات المريض'},
'doctorFilter': {'en': 'Doctors will be filtered based on your gender and age', 'ar': 'سيتم تصفية الأطباء بناءً على جنسك وعمرك'},
@@ -793,6 +794,11 @@ const Map localizedValues = {
"respiration-signs": {"en": "Respiration", "ar": "تنفس"},
"sys-dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"},
"body": {"en": "Body Mass", "ar": "كتلة\nالجسم"},
+ "body_string": {"en": "Body", "ar": "الجسم"},
+ "face": {"en": "Face", "ar": "وجه"},
+ "retouch": {"en": "Retouch", "ar": "تنميق"},
+ "bikini": {"en": "Bikini", "ar": "بيكيني"},
+ "totalMinutes": {"en": "Total Minutes", "ar": "إجمالي الدقائق"},
"feedback": {"en": "Feedback", "ar": "رأيك يهمنا"},
"send": {"en": "Send", "ar": "أرسل"},
"status": {"en": "Status", "ar": "الحالة"},
diff --git a/lib/pages/BookAppointment/components/LaserClinic.dart b/lib/pages/BookAppointment/components/LaserClinic.dart
index 1bc623d3..b1b8a154 100644
--- a/lib/pages/BookAppointment/components/LaserClinic.dart
+++ b/lib/pages/BookAppointment/components/LaserClinic.dart
@@ -1,13 +1,14 @@
+import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/laser_body_parts.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
+import 'package:diplomaticquarterapp/uitl/laser_body_parts_data.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
-
-import '../../../svg_tester.dart';
+import 'package:provider/provider.dart';
class LaserClinic extends StatefulWidget {
LaserClinic({Key key}) : super(key: key);
@@ -18,36 +19,62 @@ class LaserClinic extends StatefulWidget {
}
}
-class _LaserClinicState extends State {
- List _laserCategoryList = [0, 2, 11];
- List _selectedBodyPartList = [];
+class _LaserClinicState extends State with SingleTickerProviderStateMixin {
+ List _laserCategoryList = [1, 2, 11];
+ List _selectedBodyPartList = [];
bool _isFullBody = false;
+ LaserBodyPart fullBody;
int _selectedCategoryIndex = 0;
List laserBodyPartsList = [];
+ TabController _tabController;
+ int _duration = 0;
+
+ List maleLaserCategory = [];
+ List femaleLaserCategory = [];
+
@override
void initState() {
super.initState();
+ _tabController = TabController(length: 2, vsync: this);
+ _tabController.addListener(() {
+ if (_tabController.indexIsChanging) {
+ } else {
+ _selectedBodyPartList = List();
+ laserBodyPartsList = List();
+ _selectedCategoryIndex = 0;
+ setState(() {});
+ if (_tabController.index == 0) {
+ callLaserBodyPartsAPI(maleLaserCategory[_selectedCategoryIndex].laserCategoryID);
+ } else {
+ callLaserBodyPartsAPI(femaleLaserCategory[_selectedCategoryIndex].laserCategoryID);
+ }
+ }
+ });
Future.delayed(Duration.zero, () {
- callLaserBodyPartsAPI();
+ callLaserBodyPartsAPI(maleLaserCategory[_selectedCategoryIndex].laserCategoryID);
});
}
- callLaserBodyPartsAPI() async {
+ callLaserBodyPartsAPI(int laserCategoryId) async {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
- service.getLaserBodyPartsList(_selectedCategoryIndex).then((res) {
+ service.getLaserBodyPartsList(laserCategoryId).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) {
- setState(() {
- if (res['Laser_GetBodyPartsByCategoryList'].length != 0) {
- laserBodyPartsList = [];
- res['Laser_GetBodyPartsByCategoryList'].forEach((v) {
- laserBodyPartsList.add(LaserBodyPart.fromJson(v));
- });
- } else {}
- });
+ if (res['Laser_GetBodyPartsByCategoryList'].length != 0) {
+ List _tempList = List();
+ res['Laser_GetBodyPartsByCategoryList'].forEach((v) {
+ _tempList.add(LaserBodyPart.fromJson(v));
+ });
+ if (_tempList[0].category == 1 || _tempList[0].category == 11 || _tempList[0].category == 2 || _tempList[0].category == 10) {
+ fullBody = _tempList[0];
+ _tempList.removeAt(0);
+ }
+ laserBodyPartsList = _tempList;
+ } else {}
+ setState(() {});
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
@@ -58,126 +85,368 @@ class _LaserClinicState extends State {
});
}
+ bool lastIndexIsFirst = false;
+ bool isLastIndexIsBack = false;
+ ProjectViewModel projectViewModel;
+
+ bool get isMale => _tabController.index == 0;
+
@override
void dispose() {
super.dispose();
+ _tabController.dispose();
}
@override
Widget build(BuildContext context) {
+ projectViewModel = Provider.of(context);
+ maleLaserCategory = [
+ LaserCategoryType(1, TranslationBase.of(context).bodyString),
+ LaserCategoryType(2, TranslationBase.of(context).face),
+ LaserCategoryType(11, TranslationBase.of(context).retouch),
+ ];
+ femaleLaserCategory = [
+ LaserCategoryType(1, TranslationBase.of(context).bodyString),
+ LaserCategoryType(2, TranslationBase.of(context).face),
+ LaserCategoryType(10, TranslationBase.of(context).bikini),
+ LaserCategoryType(11, TranslationBase.of(context).retouch),
+ ];
return AppScaffold(
- appBarTitle: TranslationBase.of(context).clinic,
+ appBarTitle: TranslationBase.of(context).laserClinic,
showNewAppBar: true,
showNewAppBarTitle: true,
isShowDecPage: false,
backgroundColor: Color(0xfff7f7f7),
body: Column(
children: [
+ TabBar(
+ controller: _tabController,
+ indicatorWeight: 3.0,
+ indicatorSize: TabBarIndicatorSize.tab,
+ labelColor: Color(0xff2B353E),
+ unselectedLabelColor: Color(0xff575757),
+ labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
+ labelStyle: TextStyle(
+ fontSize: 16,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.48,
+ ),
+ unselectedLabelStyle: TextStyle(
+ fontSize: 16,
+ fontWeight: FontWeight.w600,
+ letterSpacing: -0.48,
+ ),
+ tabs: [Text(TranslationBase.of(context).male), Text(TranslationBase.of(context).female)],
+ ),
Expanded(
- child: Padding(
- padding: EdgeInsets.all(21),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- for (var index in _laserCategoryList)
- InkWell(
- onTap: () {
- _selectedCategoryIndex = index;
- setState(() {});
- callLaserBodyPartsAPI();
- },
- child: Container(
- width: 75,
- height: 75,
- alignment: Alignment.center,
- padding: EdgeInsets.only(left: 4, right: 4),
- decoration: BoxDecoration(shape: BoxShape.circle, color: _selectedCategoryIndex == index ? Colors.redAccent : Color(0xff2E303A)),
- child: Text(
- index == 0 ? "Body" : (index == 2 ? "Face" : "Retouch"),
- style: TextStyle(color: Colors.white),
- ),
- ),
- )
- ],
+ child: TabBarView(
+ physics: BouncingScrollPhysics(),
+ controller: _tabController,
+ children: [male(), female()],
+ ),
+ ),
+ Row(
+ children: [
+ Expanded(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ TranslationBase.of(context).totalMinutes + ":",
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w600,
+ color: Color(0xff575757),
+ letterSpacing: -0.48,
+ ),
+ ),
+ Text(
+ "${getDuration()} / 90",
+ style: TextStyle(
+ fontSize: 16,
+ fontWeight: FontWeight.bold,
+ color: Color(0xff2E303A),
+ letterSpacing: -0.64,
+ ),
+ ),
+ ],
+ ),
+ ),
+ Expanded(
+ child: DefaultButton(
+ TranslationBase.of(context).continues,
+ () {},
+ color: Color(0xff359846),
+ ),
+ ),
+ ],
+ ).insideContainer,
+ ],
+ ),
+ );
+ }
+
+ int getDuration() {
+ int duration = 0;
+ if (_isFullBody) {
+ _duration = int.parse(fullBody.timeDuration);
+ return _duration;
+ }
+
+ var lowerUpperLegsList = _selectedBodyPartList.where((element) => element.mappingCode == "47" || element.mappingCode == "48")?.toList() ?? [];
+ var upperLowerArmsList = _selectedBodyPartList.where((element) => element.mappingCode == "40" || element.mappingCode == "41")?.toList() ?? [];
+
+ if (_selectedBodyPartList.length > 0) {
+ duration = _selectedBodyPartList.fold(0, (previousValue, element) => previousValue + int.parse(element.timeDuration));
+ }
+ print("duration:$duration");
+ if (lowerUpperLegsList.length == 2) {
+ duration -= 30;
+ }
+ print("duration1:$duration");
+ if (upperLowerArmsList.length == 2) {
+ duration -= 15;
+ }
+ print("duration2:$duration");
+ // for (int i = 0; i < _selectedBodyPartList.length; i++) {
+ // if (
+ //
+ // (lowerUpperLegsList.length == 2 && (_selectedBodyPartList[i].mappingCode == "47" || _selectedBodyPartList[i].mappingCode == "48")) ||
+ // (upperLowerArmsList.length == 2 && (_selectedBodyPartList[i].mappingCode == "40" || _selectedBodyPartList[i].mappingCode == "41"))
+ //
+ //
+ // ) {
+ // print("duration:$duration");
+ //
+ // duration += 15;
+ // print("duration1:$duration");
+ // } else {
+ // duration += int.parse(_selectedBodyPartList[i].timeDuration);
+ // }
+ // }
+ print(duration);
+ _duration = duration;
+ return duration;
+ }
+
+ Widget laserCategoryWidget(List list, VoidCallback onTap) {
+ return SizedBox(
+ height: 40,
+ child: ListView.separated(
+ itemCount: list.length,
+ physics: BouncingScrollPhysics(),
+ scrollDirection: Axis.horizontal,
+ separatorBuilder: (cxt, index) => SizedBox(width: 8),
+ itemBuilder: (cxt, index) {
+ return InkWell(
+ onTap: () {
+ // setState(() {
+ _selectedCategoryIndex = index;
+ // });
+ onTap();
+ },
+ child: Container(
+ decoration: BoxDecoration(
+ color: _selectedCategoryIndex == index ? Color(0xffD02127) : Colors.white,
+ borderRadius: BorderRadius.circular(36),
+ border: Border.all(
+ width: 1,
+ color: _selectedCategoryIndex == index ? Colors.transparent : Color(0xffEAEAEA),
+ ),
+ ),
+ padding: EdgeInsets.symmetric(vertical: 11, horizontal: 26),
+ child: Text(
+ list[index].title,
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w600,
+ color: _selectedCategoryIndex == index ? Colors.white : Color(0xff535353),
+ letterSpacing: -0.48,
+ ),
+ ),
+ ),
+ );
+ },
+ ),
+ );
+ }
+
+ Widget bodyPartsGridView() {
+ return Container(
+ padding: EdgeInsets.symmetric(vertical: 21, horizontal: 14),
+ margin: EdgeInsets.only(top: 16),
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.all(
+ Radius.circular(15.0),
+ ),
+ boxShadow: [
+ BoxShadow(
+ color: Color(0xff000000).withOpacity(.05),
+ blurRadius: 27,
+ offset: Offset(0, -3),
+ ),
+ ],
+ ),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ if (fullBody != null)
+ Row(
+ children: [
+ SizedBox(
+ width: 22,
+ height: 22,
+ child: Theme(
+ data: Theme.of(context).copyWith(
+ unselectedWidgetColor: Color(0xffEAEAEA),
+ ),
+ child: Checkbox(
+ value: _isFullBody,
+ onChanged: (value) {
+ setState(() {
+ if (value) {
+ _selectedBodyPartList.clear();
+ }
+ _isFullBody = !_isFullBody;
+ });
+ },
+ activeColor: Color(0xffD02127),
+ ),
),
- SizedBox(height: 12),
- Expanded(
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Expanded(
- child: ListView.separated(
- //shrinkWrap: true,
- physics: BouncingScrollPhysics(),
- itemBuilder: (cxt, index) {
- return InkWell(
- onTap: () {
- if (_selectedBodyPartList.contains(laserBodyPartsList[index].bodyPart)) {
- _selectedBodyPartList.remove(laserBodyPartsList[index].bodyPart);
- } else {
- _selectedBodyPartList.add(laserBodyPartsList[index].bodyPart);
- }
- setState(() {});
- },
- child: Row(
- children: [
- Container(
- width: 24,
- height: 24,
- alignment: Alignment.center,
- decoration:
- BoxDecoration(shape: BoxShape.circle, color: _selectedBodyPartList.contains(laserBodyPartsList[index].bodyPart) ? Color(0xff2E303A) : Colors.transparent),
- child: Icon(Icons.done, color: _selectedBodyPartList.contains(laserBodyPartsList[index].bodyPart) ? Colors.white : Color(0xff2E303A))),
- SizedBox(width: 8),
- Expanded(
- child: Text(
- laserBodyPartsList[index].bodyPart,
- style: TextStyle(
- color: Color(0xff2E303A),
- ),
- ),
- ),
- ],
- ),
- );
- },
- separatorBuilder: (cxt, index) => Divider(
- height: 1,
- thickness: 1,
- color: Color(0xff2E303A),
- ),
- itemCount: laserBodyPartsList.length),
- ),
- Expanded(
- child: ListView(
- physics: BouncingScrollPhysics(),
+ ),
+ SizedBox(width: 12),
+ Text(
+ projectViewModel.isArabic ? fullBody.bodyPartN : fullBody.bodyPart,
+ style: TextStyle(fontSize: 15, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.6, height: 21 / 14),
+ ),
+ ],
+ ),
+ GridView.builder(
+ gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 85 / 107, crossAxisSpacing: 4, mainAxisSpacing: 21),
+ physics: NeverScrollableScrollPhysics(),
+ shrinkWrap: true,
+ itemCount: laserBodyPartsList.length,
+ padding: fullBody != null ? EdgeInsets.only(top: 16) : EdgeInsets.zero,
+ itemBuilder: (BuildContext context, int index) {
+ bool _isSelected = _selectedBodyPartList.any((file) => file.id == laserBodyPartsList[index].id);
+ return InkWell(
+ onTap: _isFullBody
+ ? null
+ : () {
+ if (_duration >= 90) {
+ if (_isSelected) {
+ _selectedBodyPartList.removeWhere((element) => element.id == laserBodyPartsList[index].id);
+
+ // _selectedBodyPartList.remove(laserBodyPartsList[index]);
+ setState(() {});
+ return;
+ }
+ AppToast.showToast(message: TranslationBase.of(context).laserMaxLimitReach);
+ return;
+ }
+ if (_isSelected) {
+ _selectedBodyPartList.removeWhere((element) => element.id == laserBodyPartsList[index].id);
+ // _selectedBodyPartList.remove(laserBodyPartsList[index]);
+ } else {
+ if (_duration + int.parse(laserBodyPartsList[index].timeDuration) > 90) {
+ AppToast.showToast(message: TranslationBase.of(context).laserMaxLimitReach);
+ return;
+ }
+ _selectedBodyPartList.add(laserBodyPartsList[index]);
+ }
+ setState(() {});
+ },
+ child: AnimatedOpacity(
+ opacity: _isFullBody ? 0.25 : 1.0,
+ duration: Duration(milliseconds: 200),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ AspectRatio(
+ aspectRatio: 97 / 97,
+ child: FittedBox(
+ fit: BoxFit.fitWidth,
+ child: Stack(
+ alignment: Alignment.topRight,
children: [
- Center(
- child: Text(
- "Minutes",
- style: TextStyle(color: Color(0xff2E303A)),
+ Container(
+ margin: EdgeInsets.only(top: 5, right: 5),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(15.0),
+ border: Border.all(color: _isSelected ? Color(0xffD02127) : Color(0xffEAEAEA), width: 2),
),
+ child: LaserBodyParts()
+ .getCategoryImage(isMale, (isMale ? maleLaserCategory : femaleLaserCategory)[_selectedCategoryIndex].laserCategoryID, laserBodyPartsList[index].mappingCode),
),
- Expanded(
- child: BodyPartMapper(
- dataList: _selectedBodyPartList,
- ))
+ if (_isSelected)
+ Container(
+ width: 18,
+ height: 18,
+ child: Icon(Icons.done, color: Colors.white, size: 12),
+ decoration: BoxDecoration(
+ color: Color(0xffD02127),
+ borderRadius: BorderRadius.circular(30.0),
+ ),
+ ),
],
),
- )
- ],
- ),
- )
- ],
- ),
- ),
+ ),
+ ),
+ SizedBox(height: 6),
+ Expanded(
+ child: Text(
+ projectViewModel.isArabic ? laserBodyPartsList[index].bodyPartN : laserBodyPartsList[index].bodyPart,
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w600,
+ color: Color(0xff2B353E),
+ letterSpacing: -0.48,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ },
),
- DefaultButton("Continue", () {}).insideContainer,
],
),
);
}
+
+ Widget male() {
+ return ListView(
+ physics: BouncingScrollPhysics(),
+ padding: EdgeInsets.all(21),
+ children: [
+ laserCategoryWidget(maleLaserCategory, () {
+ callLaserBodyPartsAPI(maleLaserCategory[_selectedCategoryIndex].laserCategoryID);
+ }),
+ if (laserBodyPartsList.isNotEmpty) bodyPartsGridView()
+ ],
+ );
+ }
+
+ Widget female() {
+ return ListView(
+ physics: BouncingScrollPhysics(),
+ padding: EdgeInsets.all(21),
+ children: [
+ laserCategoryWidget(femaleLaserCategory, () {
+ callLaserBodyPartsAPI(femaleLaserCategory[_selectedCategoryIndex].laserCategoryID);
+ }),
+ if (laserBodyPartsList.isNotEmpty) bodyPartsGridView()
+ ],
+ );
+ }
+}
+
+class LaserCategoryType {
+ int laserCategoryID;
+ String title;
+
+ LaserCategoryType(this.laserCategoryID, this.title);
}
diff --git a/lib/pages/DrawerPages/notifications/notification_details_page.dart b/lib/pages/DrawerPages/notifications/notification_details_page.dart
index 7633ab9c..7c352c7d 100644
--- a/lib/pages/DrawerPages/notifications/notification_details_page.dart
+++ b/lib/pages/DrawerPages/notifications/notification_details_page.dart
@@ -34,70 +34,69 @@ class NotificationsDetailsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return BaseView(
- builder: (_, model, widget) => AppScaffold(
- isShowAppBar: true,
- showNewAppBar: true,
- showNewAppBarTitle: true,
- appBarTitle: TranslationBase.of(context).notificationDetails,
- body: SingleChildScrollView(
- child: Center(
- child: FractionallySizedBox(
- widthFactor: 0.9,
- child: Column(
- children: [
- SizedBox(
- height: 25,
- ),
- Container(
- width: double.infinity,
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: Text(
- DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false),
- style: TextStyle(
+
+ return AppScaffold(
+ isShowAppBar: true,
+ showNewAppBar: true,
+ showNewAppBarTitle: true,
+ appBarTitle: TranslationBase.of(context).notificationDetails,
+ body: SingleChildScrollView(
+ child: Center(
+ child: FractionallySizedBox(
+ widthFactor: 0.9,
+ child: Column(
+ children: [
+ SizedBox(
+ height: 25,
+ ),
+ Container(
+ width: double.infinity,
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Text(
+ DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(notification.createdOn)) + " " + DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(notification.createdOn), false),
+ style: TextStyle(
fontSize: 18.0,
color: Colors.black,
fontWeight: FontWeight.w600
- ),
),
),
),
- SizedBox(
- height: 15,
- ),
- if (notification.messageTypeData.length != 0)
- FractionallySizedBox(
- widthFactor: 0.9,
- child: Image.network(notification.messageTypeData,
- loadingBuilder: (BuildContext context, Widget child,
- ImageChunkEvent loadingProgress) {
- if (loadingProgress == null) return child;
- return Center(
- child: SizedBox(
- width: 40.0,
- height: 40.0,
- child: AppCircularProgressIndicator(),
- ),
- );
- },
- fit: BoxFit
- .fill) //Image.network(notification.messageTypeData),
- ),
- SizedBox(
- height: 15,
+ ),
+ SizedBox(
+ height: 15,
+ ),
+ if (notification.messageTypeData.length != 0)
+ FractionallySizedBox(
+ widthFactor: 0.9,
+ child: Image.network(notification.messageTypeData,
+ loadingBuilder: (BuildContext context, Widget child,
+ ImageChunkEvent loadingProgress) {
+ if (loadingProgress == null) return child;
+ return Center(
+ child: SizedBox(
+ width: 40.0,
+ height: 40.0,
+ child: AppCircularProgressIndicator(),
+ ),
+ );
+ },
+ fit: BoxFit
+ .fill) //Image.network(notification.messageTypeData),
),
- Row(
- children: [
- Expanded(
- child: Center(
- child: Text(notification.message),
- ),
+ SizedBox(
+ height: 15,
+ ),
+ Row(
+ children: [
+ Expanded(
+ child: Center(
+ child: Text(notification.message),
),
- ],
- ),
- ],
- ),
+ ),
+ ],
+ ),
+ ],
),
),
),
diff --git a/lib/pages/DrawerPages/notifications/notifications_page.dart b/lib/pages/DrawerPages/notifications/notifications_page.dart
index 6ae318c3..fc34dbfe 100644
--- a/lib/pages/DrawerPages/notifications/notifications_page.dart
+++ b/lib/pages/DrawerPages/notifications/notifications_page.dart
@@ -1,3 +1,4 @@
+import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
@@ -21,158 +22,131 @@ class NotificationsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
+ AppGlobal.context = context;
return BaseView(
onModelReady: (model) {
- GetNotificationsRequestModel getNotificationsRequestModel =
- new GetNotificationsRequestModel(
- currentPage: currentIndex,
- pagingSize: 14,
- notificationStatusID: 2);
+ GetNotificationsRequestModel getNotificationsRequestModel = new GetNotificationsRequestModel(currentPage: currentIndex, pagingSize: 14, notificationStatusID: 2);
model.getNotifications(getNotificationsRequestModel, context);
},
builder: (_, model, widget) => AppScaffold(
- isShowAppBar: true,
- showNewAppBar: true,
- showNewAppBarTitle: true,
- appBarTitle: TranslationBase.of(context).notifications,
- baseViewModel: model,
- body: ListView.separated(
- itemBuilder: (context, index) {
- if (index == model.notifications.length) {
- return InkWell(
- onTap: () async {
- GifLoaderDialogUtils.showMyDialog(context);
- currentIndex++;
- GetNotificationsRequestModel
- getNotificationsRequestModel =
- new GetNotificationsRequestModel(
- currentPage: currentIndex,
- pagingSize: 14,
- notificationStatusID: 2);
-
- await model.getNotifications(
- getNotificationsRequestModel, context);
- GifLoaderDialogUtils.hideDialog(context);
- },
- child: Center(
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- // Image.asset('assets/images/notf.png'),
- Icon(
- Icons.notifications_active,
- color: CustomColors.accentColor,
- size: 40,
- ),
- Padding(
- padding: const EdgeInsets.only(left: 10.0, right: 10.0),
- child: Text(TranslationBase.of(context).moreNotifications, style: TextStyle(
- color: CustomColors.accentColor,
- fontWeight: FontWeight.w600,
- letterSpacing: -0.64,
- decoration: TextDecoration.underline
- )),
- ),
- ],
- ),
- ),
- );
- }
-
+ isShowAppBar: true,
+ showNewAppBar: true,
+ showNewAppBarTitle: true,
+ appBarTitle: TranslationBase.of(context).notifications,
+ baseViewModel: model,
+ body: ListView.separated(
+ itemBuilder: (context, index) {
+ if (index == model.notifications.length) {
return InkWell(
onTap: () async {
- if (!model.notifications[index].isRead) {
- model.markAsRead(model.notifications[index].id);
- }
- Navigator.push(
- context,
- FadePage(
- page: NotificationsDetailsPage(
- notification: model.notifications[index],
- )));
+ GifLoaderDialogUtils.showMyDialog(context);
+ currentIndex++;
+ GetNotificationsRequestModel getNotificationsRequestModel = new GetNotificationsRequestModel(currentPage: currentIndex, pagingSize: 14, notificationStatusID: 2);
+
+ await model.getNotifications(getNotificationsRequestModel, context);
+ GifLoaderDialogUtils.hideDialog(context);
},
- child: Container(
- width: double.infinity,
- padding: EdgeInsets.all(8.0),
- decoration: BoxDecoration(
- color: model.notifications[index].isRead
- ? Theme.of(context).scaffoldBackgroundColor
- : CustomColors.accentColor.withOpacity(0.05),
- border: projectViewModel.isArabic
- ? Border(
- right: BorderSide(
- color: model.notifications[index].isRead
- ? Theme.of(context).scaffoldBackgroundColor
- : CustomColors.accentColor,
- width: 5.0,
- ),
- )
- : Border(
- left: BorderSide(
- color: model.notifications[index].isRead
- ? Theme.of(context).scaffoldBackgroundColor
- : CustomColors.accentColor,
- width: 5.0,
- ),
- ),
- ),
+ child: Center(
child: Row(
- children: [
- Expanded(
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Texts(DateUtil.getDayMonthYearDateFormatted(
- DateUtil.convertStringToDate(model
- .notifications[index].createdOn)) +
- " " +
- DateUtil.formatDateToTimeLang(
- DateUtil.convertStringToDate(model
- .notifications[index].createdOn),
- false)),
- SizedBox(
- height: 5,
- ),
- Row(
- children: [
- Expanded(
- child: Texts(model
- .notifications[index].message)),
- if (model
- .notifications[index].messageType ==
- "image")
- Icon(
- FontAwesomeIcons.images,
- color: CustomColors.grey,
- )
- ],
- ),
- SizedBox(
- height: 5,
- ),
- ],
- ),
- ),
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ // Image.asset('assets/images/notf.png'),
+ Icon(
+ Icons.notifications_active,
+ color: CustomColors.accentColor,
+ size: 40,
+ ),
+ Padding(
+ padding: const EdgeInsets.only(left: 10.0, right: 10.0),
+ child: Text(TranslationBase.of(context).moreNotifications,
+ style: TextStyle(color: CustomColors.accentColor, fontWeight: FontWeight.w600, letterSpacing: -0.64, decoration: TextDecoration.underline)),
),
],
),
),
);
- },
- separatorBuilder: (context, index) {
- return Column(
- children: [
- Divider(
- color: Colors.grey[300],
- thickness: 2.0,
- ),
- ],
- );
- },
- itemCount: model.notifications.length + 1)),
+ }
+
+ return InkWell(
+ onTap: () async {
+ if (!model.notifications[index].isRead) {
+ model.markAsRead(model.notifications[index].id);
+ }
+ Navigator.push(
+ context,
+ FadePage(
+ page: NotificationsDetailsPage(
+ notification: model.notifications[index],
+ )));
+ },
+ child: Container(
+ width: double.infinity,
+ padding: EdgeInsets.all(8.0),
+ decoration: BoxDecoration(
+ color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor.withOpacity(0.05),
+ border: projectViewModel.isArabic
+ ? Border(
+ right: BorderSide(
+ color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor,
+ width: 5.0,
+ ),
+ )
+ : Border(
+ left: BorderSide(
+ color: model.notifications[index].isRead ? Theme.of(context).scaffoldBackgroundColor : CustomColors.accentColor,
+ width: 5.0,
+ ),
+ ),
+ ),
+ child: Row(
+ children: [
+ Expanded(
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Texts(DateUtil.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(model.notifications[index].createdOn)) +
+ " " +
+ DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(model.notifications[index].createdOn), false)),
+ SizedBox(
+ height: 5,
+ ),
+ Row(
+ children: [
+ Expanded(child: Texts(model.notifications[index].message)),
+ if (model.notifications[index].messageType == "image")
+ Icon(
+ FontAwesomeIcons.images,
+ color: CustomColors.grey,
+ )
+ ],
+ ),
+ SizedBox(
+ height: 5,
+ ),
+ ],
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ },
+ separatorBuilder: (context, index) {
+ return Column(
+ children: [
+ Divider(
+ color: Colors.grey[300],
+ thickness: 2.0,
+ ),
+ ],
+ );
+ },
+ itemCount: model.notifications.length + 1),
+ ),
);
}
}
diff --git a/lib/pages/landing/home_page_2.dart b/lib/pages/landing/home_page_2.dart
index 615ff7c7..9f395cad 100644
--- a/lib/pages/landing/home_page_2.dart
+++ b/lib/pages/landing/home_page_2.dart
@@ -4,7 +4,6 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
-import 'package:diplomaticquarterapp/svg_tester.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
diff --git a/lib/svg_tester.dart b/lib/svg_tester.dart
deleted file mode 100644
index eec4d371..00000000
--- a/lib/svg_tester.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_html/flutter_html.dart';
-
-class BodyPartMapper extends StatelessWidget {
- List dataList;
-
- BodyPartMapper({Key key, this.dataList}) : super(key: key);
-
- String jaduu =
- '';
-
- @override
- Widget build(BuildContext context) {
- return Html(data: getSvg());
- }
-
- String getSvg() {
-
-
- String finalSvg =
- '';
- return finalSvg;
- }
-}
diff --git a/lib/uitl/laser_body_parts_data.dart b/lib/uitl/laser_body_parts_data.dart
new file mode 100644
index 00000000..b8e8e58e
--- /dev/null
+++ b/lib/uitl/laser_body_parts_data.dart
@@ -0,0 +1,129 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_svg/svg.dart';
+
+class LaserBodyParts {
+ static final LaserBodyParts _instance = LaserBodyParts._internal();
+
+ LaserBodyParts._internal();
+
+ factory LaserBodyParts() => _instance;
+
+ static Widget image(String assetUri) {
+ return new SvgPicture.asset(assetUri, fit: BoxFit.cover,width: 97,height: 97,);
+ }
+
+ 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")
+ };
+
+ 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")
+ };
+
+ 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")
+ };
+
+ 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")
+ };
+
+ 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")
+ };
+
+ 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")
+ };
+
+ 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")
+ };
+
+
+ Widget getCategoryImage(bool isMale, int category, String mappingCode) {
+ if (isMale) {
+ if (category == 1) {
+ return maleBodyMap[mappingCode];
+ }
+ if (category == 2) {
+ return maleFaceMap[mappingCode];
+ }
+ if (category == 11) {
+ return maleBodyRetouchMap[mappingCode];
+ }
+ } else {
+ if (category == 1) {
+ return femaleBodyMap[mappingCode];
+ }
+ if (category == 2) {
+ return femaleFaceMap[mappingCode];
+ }
+ if (category == 10) {
+ return femaleBodyBikiniMap[mappingCode];
+ }
+ if (category == 11) {
+ return femaleBodyRetouchMap[mappingCode];
+ }
+ }
+ return null;
+ }
+}
diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart
index 92656188..88c053e7 100644
--- a/lib/uitl/translations_delegate_base.dart
+++ b/lib/uitl/translations_delegate_base.dart
@@ -121,6 +121,8 @@ class TranslationBase {
String get pressAgain => localizedValues['pressAgain'][locale.languageCode];
+ String get laserMaxLimitReach => localizedValues['laserMaxLimitReach'][locale.languageCode];
+
String get confirmLiveCare => localizedValues['confirmLiveCare'][locale.languageCode];
String get doctorFilter => localizedValues['doctorFilter'][locale.languageCode];
@@ -1338,6 +1340,16 @@ class TranslationBase {
String get body => localizedValues['body'][locale.languageCode];
+ String get bodyString => localizedValues['body_string'][locale.languageCode];
+
+ String get bikini => localizedValues['bikini'][locale.languageCode];
+
+ String get totalMinutes => localizedValues['totalMinutes'][locale.languageCode];
+
+ String get face => localizedValues['face'][locale.languageCode];
+
+ String get retouch => localizedValues['retouch'][locale.languageCode];
+
String get feedbackTitle => localizedValues['feedback'][locale.languageCode];
String get send => localizedValues['send'][locale.languageCode];
@@ -1397,6 +1409,7 @@ class TranslationBase {
String get enablingWifi => localizedValues['enablingWifi'][locale.languageCode];
String get offerAndPackages => localizedValues['offerAndPackages'][locale.languageCode];
+
String get offerAndPackagesDetails => localizedValues['offerAndPackagesDetails'][locale.languageCode];
String get invoiceNo => localizedValues['InvoiceNo'][locale.languageCode];
@@ -2583,7 +2596,6 @@ class TranslationBase {
String get cholesTitle => localizedValues["cholesTitle"][locale.languageCode];
String get laserClinic => localizedValues["laserClinic"][locale.languageCode];
-
}
class TranslationBaseDelegate extends LocalizationsDelegate {
diff --git a/lib/widgets/buttons/defaultButton.dart b/lib/widgets/buttons/defaultButton.dart
index 274ef651..14e93d66 100644
--- a/lib/widgets/buttons/defaultButton.dart
+++ b/lib/widgets/buttons/defaultButton.dart
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
-extension WithContainer on DefaultButton {
+extension WithContainer on Widget {
Widget get insideContainer => Container(color: Colors.white, padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this);
}
diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart
index affcb02a..f961d15a 100644
--- a/lib/widgets/drawer/app_drawer_widget.dart
+++ b/lib/widgets/drawer/app_drawer_widget.dart
@@ -360,7 +360,7 @@ class _AppDrawerState extends State {
onTap: () {
//NotificationsPage
// Navigator.of(context).pop();
- if (!projectProvider.isLoginChild) Navigator.push(AppGlobal.context, FadePage(page: NotificationsPage()));
+ if (!projectProvider.isLoginChild) Navigator.push(context, FadePage(page: NotificationsPage()));
},
),
if (projectProvider.havePrivilege(3))
diff --git a/pubspec.yaml b/pubspec.yaml
index 3bdadc73..8c6c1fc7 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -226,6 +226,9 @@ flutter:
- assets/images/new/services/
- assets/images/new/appointment-rating/
- assets/images/new/payment/
+ - assets/images/new/body_parts/
+ - assets/images/new/body_parts/male/
+ - assets/images/new/body_parts/female/
fonts:
- family: WorkSans