diff --git a/assets/images/DQ/DQ_logo.png b/assets/images/DQ/DQ_logo.png new file mode 100644 index 00000000..993a1bd3 Binary files /dev/null and b/assets/images/DQ/DQ_logo.png differ diff --git a/assets/images/DQ/dq_logo_icon.png b/assets/images/DQ/dq_logo_icon.png new file mode 100644 index 00000000..71626bd8 Binary files /dev/null and b/assets/images/DQ/dq_logo_icon.png differ diff --git a/assets/images/female_face.png b/assets/images/female_face.png new file mode 100644 index 00000000..be8ed225 Binary files /dev/null and b/assets/images/female_face.png differ diff --git a/assets/images/male_face.png b/assets/images/male_face.png new file mode 100644 index 00000000..7adf335a Binary files /dev/null and b/assets/images/male_face.png differ diff --git a/assets/images/new-design/vidamobile.png b/assets/images/new-design/vidamobile.png new file mode 100644 index 00000000..f096e8a7 Binary files /dev/null and b/assets/images/new-design/vidamobile.png differ diff --git a/assets/images/progress-loading.gif b/assets/images/progress-loading.gif new file mode 100644 index 00000000..0d7769b7 Binary files /dev/null and b/assets/images/progress-loading.gif differ diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 5b77d966..29455158 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -109,7 +109,8 @@ const Map> localizedValues = { 'set-reminder': {'en': 'Set Reminder', 'ar': 'تعيين تذكير'}, 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'}, - 'loginregister': {'en': 'Login / Register', 'ar': 'دخولتسجيل'}, + 'loginregister': {'en': 'Login / Register', 'ar': 'تسجيل الدخول'}, + 'poweredBy': {'en': 'Powered By', 'ar': 'مشغل بواسطة'}, 'welcome': {'en': 'Welcome', 'ar': 'أهلا بك'}, 'welcome_text': { 'en': 'Dr. Sulaiman Al Habib Mobile Application ', @@ -117,7 +118,7 @@ const Map> localizedValues = { }, 'welcome_text2': { 'en': 'Have you visited AlHabib Medical Group before? ', - 'ar': 'الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك' + 'ar': 'هل قمت بزيارة مجموعة الحبيب الطبية من قبل؟' }, 'yes': {'en': 'Yes', 'ar': 'نعم'}, 'no': {'en': 'No', 'ar': 'لا'}, @@ -129,7 +130,9 @@ const Map> localizedValues = { "nationalID": {"en": "National ID", "ar": "رقم الهوية"}, "fileNo": {"en": "File Number", "ar": "رقم الملف"}, "forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"}, - "enter-national-id": { + "forgotFileNoTitle": {"en": "Forgot medical file Number", "ar": "نسيت رقم الملف"}, + +"enter-national-id": { "en": "Please enter mobile number and national ID / Iqama", "ar": "الرجاء إدخال رقم الجوال والهوية الوطنية / الاقامة" }, @@ -547,18 +550,18 @@ const Map> localizedValues = { "en": "Please enter the verification code send to", "ar": "الرجاء إدخال رمز التحقق المرسل إلى" }, - "EyeMeasurements":{"en":"Eye Measurements","ar":"قياسات النظر"}, - "Measurements":{"en":"Measurements","ar":"قياسات"}, - "Classes":{"en":"Classes","ar":"نظارات"}, - "ContactLens":{"en":"Contact Lens","ar":"العدسات اللاصقة"}, - "RightEye":{"en":"Right Eye","ar":"العين اليمين"}, - "Sphere":{"en":"Sphere","ar":"القوة"}, - "Cylinder":{"en":"Cylinder","ar":"الدائرية"}, - "Axis":{"en":"Axis","ar":"المحاور"}, - "Prism":{"en":"Prism","ar":"موشور"}, - "VA":{"en":"Prism","ar":"المحاور"}, - "LeftEye":{"en":"Left Eye","ar":"العين اليسرى"}, - "Brand":{"en":"Brand","ar":"النوع"}, + "EyeMeasurements": {"en": "Eye Measurements", "ar": "قياسات النظر"}, + "Measurements": {"en": "Measurements", "ar": "قياسات"}, + "Classes": {"en": "Classes", "ar": "نظارات"}, + "ContactLens": {"en": "Contact Lens", "ar": "العدسات اللاصقة"}, + "RightEye": {"en": "Right Eye", "ar": "العين اليمين"}, + "Sphere": {"en": "Sphere", "ar": "القوة"}, + "Cylinder": {"en": "Cylinder", "ar": "الدائرية"}, + "Axis": {"en": "Axis", "ar": "المحاور"}, + "Prism": {"en": "Prism", "ar": "موشور"}, + "VA": {"en": "Prism", "ar": "المحاور"}, + "LeftEye": {"en": "Left Eye", "ar": "العين اليسرى"}, + "Brand": {"en": "Brand", "ar": "النوع"}, "Power": {"en": "Power", "ar": "القوة"}, "Diameter": {"en": "Diameter", "ar": "القطر"}, "Remarks": {"en": "Remarks", "ar": "ملاحضات"}, @@ -590,6 +593,11 @@ const Map> localizedValues = { "en": "View Doctor Responses", "ar": "الاطلاع على ردود الأطباء" }, + "ServiceInformationButton": {"en": "LOGIN / REGISTER", "ar": "دخول / تسجيل"}, + "ServiceInformationTitle": { + "en": "Service Information", + "ar": "معلومات الخدمة" + }, "ServiceInformation": {"en": "Service Information", "ar": "معلومات الخدمة"}, "HomeHealthCare": { "en": "Home Health Care", @@ -601,24 +609,66 @@ const Map> localizedValues = { "ar": "توفر هذه الخدمة مجموعه من خدمات الرعايه الصحيه المنزلية و متابعه مستمره وشامله للذين لا يستطيعون الوصول للمنشات الصحيه في اماكن اقامتهم (التحاليل المخبرية – الاشعة – التطعيمات – العلاج الطبيعي)... " }, - "LoginRegister": { - "en": "Login/Register", - "ar": "دخول / تسجيل" + "LoginRegister": {"en": "Login/Register", "ar": "دخول / تسجيل"}, + "OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"}, + "info-lab": { + "en": + "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", + "ar": + "خدمة نتائج المختبر: هذه الخدمة تمكنك من الاطلاع على نتائج جميع الفحوصات المخبرية التي تمت في مجموعة الحبيب الطبية." }, - "OrderLog": { - "en": "Order Log", - "ar": " سجل الطلبات" + "info-radiology": { + "en": + "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.", + "ar": + "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل." }, - "ServiceInformationButton":{"en":"LOGIN / REGISTER","ar":"دخول / تسجيل"}, - "ServiceInformationTitle":{"en":"Service Information","ar":"معلومات الخدمة"}, - "info-lab": { - "en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", - "ar": "خدمة نتائج المختبر: هذه الخدمة تمكنك من الاطلاع على نتائج جميع الفحوصات المخبرية التي تمت في مجموعة الحبيب الطبية." + "TermsService": {"en": "Terms of Service", "ar": "شروط الخدمه"}, + "Beforeusing": { + "en": "Before using the checkup, please read Terms of Service.", + "ar": "قبل استخدام الفحص ، يرجى قراءة شروط الخدمة" }, - "info-radiology": { - "en": "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.", - "ar": "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل." + "accept": { + "en": "I read and accept Terms of Service and Privacy Policy", + "ar": "قرأت ووافقت على شروط الخدمة وسياسة الخصوصية" + }, + "data-safe-info": { + "en": + "Information that you provide is anonymous and not shared with anyone.", + "ar": "المعلومات التي تقدمها لا تتم مشاركتها مع أي شخص" + }, + "data-safe": {"en": " Your data is safe.", "ar": "بياناتك آمنة"}, + "informational": { + "en": + "Checkup is for informational purposes and is not a qualified medical opinion", + "ar": "الفحص هو لأغراض معلوماتية وليس رأي طبي مؤهل" }, + "not-use-in-emerbency": { + "en": "Do not use in emergencies.", + "ar": "لا تستخدم في حالات الطوارئ" + }, + "not-use-in-emerbency-details": { + "en": "In case of health emergency, ", + "ar": "في حالة الطوارئ اتصل بأقرب رقم للطوارئ على الفور" + }, + "not-use-in-emerbency-details-call": { + "en": "call the nearest emergency number immediately", + "ar": " اتصل بأقرب رقم للطوارئ على الفور" + }, + "check-diagnosis": { + "en": "Checkup is not a diagnosis.", + "ar": "الفحص ليس تشخيص." + }, + "remeberthat": {"en": "Remember that", "ar": "تذكر ذلك:"}, + "select-gender": {"en": "Select Gender", "ar": "اختر الجنس"}, + "i-am-a": {"en": "I am a ...", "ar": "أنا ..."}, + "select-age": {"en": "Select Your Age", "ar": "حدد العمر"}, + "i-am": {"en": "I am", "ar": "أنا"}, + "years-old": {"en": "years old", "ar": "سنة"}, + "drag-point": { + "en": "Drag point to change your age", + "ar": "اسحب لتغيير عمرك" + }, }; diff --git a/lib/main.dart b/lib/main.dart index 3c2ef026..24d44499 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -81,8 +81,8 @@ class MyApp extends StatelessWidget { iconTheme: IconThemeData(), appBarTheme: AppBarTheme( color: Color(0xff40ACC9), - brightness: Brightness.light, - elevation: 0.0, + brightness: Brightness.dark, + elevation: 10.0, actionsIconTheme: IconThemeData( color: Colors.grey[800], ), diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart index 9d8466bb..ea98921d 100644 --- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart +++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart @@ -17,6 +17,7 @@ import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dar import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; +import 'package:diplomaticquarterapp/pages/symptom-checker/info.dart'; import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -224,8 +225,9 @@ class _AllHabibMedicalServiceState extends State { title: TranslationBase.of(context).todoList, ), ServicesContainer( - onTap: () => Navigator.of(context).pushNamed( - SYMPTOM_CHECKER, + onTap: () => Navigator.push( + context, + FadePage(page: SymptomInfo()), ), imageLocation: 'assets/images/new-design/body_icon.png', title: 'Symptom Checker'), diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart index 34dbdc2f..85aae542 100644 --- a/lib/pages/BookAppointment/BookSuccess.dart +++ b/lib/pages/BookAppointment/BookSuccess.dart @@ -230,9 +230,10 @@ class _BookSuccessState extends State { children: [ _getBulletPoint("1"), Container( + width: MediaQuery.of(context).size.width * 0.8, child: Text( "Please confirm the appointment to avoid the cancellation", - overflow: TextOverflow.fade, + overflow: TextOverflow.clip, style: TextStyle(fontSize: 13.0)), ), ], @@ -314,7 +315,7 @@ class _BookSuccessState extends State { minWidth: MediaQuery.of(context).size.width * 0.7, height: 45.0, child: RaisedButton( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), textColor: Colors.white, disabledTextColor: Colors.white, disabledColor: new Color(0xFFbcc2c4), @@ -483,7 +484,7 @@ class _BookSuccessState extends State { minWidth: MediaQuery.of(context).size.width * 0.7, height: 45.0, child: RaisedButton( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), textColor: Colors.white, disabledTextColor: Colors.white, disabledColor: new Color(0xFFbcc2c4), diff --git a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart index 3e9ae0cd..aca0884f 100644 --- a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart +++ b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart @@ -235,7 +235,7 @@ class _DocAvailableAppointmentsState extends State return children; }, ), - onDaySelected: (date, events,format) { + onDaySelected: (date, events) { _onDaySelected(date, events); _animationController.forward(from: 0.0); }, diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 9d833db1..c49cbc25 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -8,7 +8,6 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/DentalComplaints.dart import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; -import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; @@ -17,7 +16,9 @@ import 'package:smart_progress_bar/smart_progress_bar.dart'; class SearchByClinic extends StatefulWidget { final List clnicIds; + SearchByClinic({this.clnicIds}); + @override _SearchByClinicState createState() => _SearchByClinicState(); } @@ -26,11 +27,13 @@ class _SearchByClinicState extends State { bool nearestAppo = false; String dropdownValue; String projectDropdownValue; + // var event = RobotProvider(); List clinicsList = []; List projectsList = []; bool isMobileAppDentalAllow = false; bool isLoaded = false; + @override void initState() { WidgetsBinding.instance.addPostFrameCallback((_) => getClinicsList()); @@ -47,7 +50,7 @@ class _SearchByClinicState extends State { Row( children: [ Checkbox( - activeColor: new Color(0xFFc5272d), + activeColor: new Color(0xFF40ACC9), value: nearestAppo, onChanged: (bool value) { setState(() { @@ -77,12 +80,6 @@ class _SearchByClinicState extends State { } }); }, - // trailing: Icon(TranslationBase.of(AppGlobal.context) - // .locale - // .languageCode == - // 'en' - // ? Icons.keyboard_arrow_right - // : Icons.keyboard_arrow_left), title: Text(result.clinicDescription, style: TextStyle( fontSize: 14.0, diff --git a/lib/pages/BookAppointment/widgets/BranchView.dart b/lib/pages/BookAppointment/widgets/BranchView.dart index 4ba5a9d3..06218d61 100644 --- a/lib/pages/BookAppointment/widgets/BranchView.dart +++ b/lib/pages/BookAppointment/widgets/BranchView.dart @@ -109,7 +109,7 @@ class _ExpandableListViewState extends State { height: 28.0, width: 30.0, decoration: new BoxDecoration( - color: Colors.red, + color: Color(0xFF40ACC9), shape: BoxShape.circle, ), child: new Center( diff --git a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart index 9f2418fd..6e1a0182 100644 --- a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart +++ b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart @@ -348,7 +348,7 @@ class _CovidTimeSlotsState extends State return children; }, ), - onDaySelected: (date, event,formats) { + onDaySelected: (date, event) { _onDaySelected(date, event,); _animationController.forward(from: 0.0); }, diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart index 18740ce7..4321b20e 100644 --- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart +++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart @@ -94,7 +94,7 @@ class _AppointmentActionsState extends State { child: Text(e.title, overflow: TextOverflow.clip, style: TextStyle( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), letterSpacing: 1.0, fontSize: 20.0)), ), diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index 9ba57084..c31ccc73 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -253,7 +253,7 @@ class _ToDoState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 12.0, - color: Colors.red[600], + color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), diff --git a/lib/pages/ToDoList/widgets/upcomingCard.dart b/lib/pages/ToDoList/widgets/upcomingCard.dart index c1d1b546..7f325ba6 100644 --- a/lib/pages/ToDoList/widgets/upcomingCard.dart +++ b/lib/pages/ToDoList/widgets/upcomingCard.dart @@ -191,7 +191,7 @@ class _TodoListCardState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 12.0, - color: Colors.red[600], + color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), ), diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 85c1b232..f36d2d20 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/models/Authentication/check_activation_code import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart'; import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/Authentication/send_activation_request.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; @@ -13,11 +14,9 @@ import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:local_auth/local_auth.dart'; @@ -92,9 +91,9 @@ class _ConfirmLogin extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, ), AppText( TranslationBase.of(context).welcomeBack + @@ -146,9 +145,9 @@ class _ConfirmLogin extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, ), this.onlySMSBox == false ? AppText( @@ -163,7 +162,7 @@ class _ConfirmLogin extends State { .verifyFingerprint2, fontSize: SizeConfig.textMultiplier * 2.5, - textAlign: TextAlign.left, + textAlign: TextAlign.start, ), ])), user != null && isMoreOption == false @@ -330,11 +329,10 @@ class _ConfirmLogin extends State { var request = this.getCommonRequest(); // loading(true); - await this.authService.sendActivationCode(request).then((result) => { - if (result != null && result['isSMSSent'] == true) - {this.startSMSService(type)} - }); - + await this.authService.sendActivationCode(request).then((result) => { + if (result != null && result['isSMSSent'] == true) + {this.startSMSService(type)} + }); // SMSOTP.showLoadingDialog(context, false), } diff --git a/lib/pages/login/forgot-password.dart b/lib/pages/login/forgot-password.dart index bbdbb1ae..7e2f19fa 100644 --- a/lib/pages/login/forgot-password.dart +++ b/lib/pages/login/forgot-password.dart @@ -1,6 +1,6 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; @@ -16,10 +16,11 @@ class _ForgotPassword extends State { String selectedType = 'Saudi Arabia'; final TextEditingController nationalIDorFile = null; final TextEditingController mobileNo = null; + @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle: TranslationBase.of(context).forgotPassword, + appBarTitle: TranslationBase.of(context).forgotFileNoTitle, isShowAppBar: true, isShowDecPage: false, body: SingleChildScrollView( @@ -32,8 +33,9 @@ class _ForgotPassword extends State { flex: 1, child: AppText( TranslationBase.of(context).forgotDesc, - fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, + fontSize: SizeConfig.textMultiplier * 3, + textAlign: TextAlign.start, + marginTop: 10.0, )), Expanded( flex: 2, @@ -43,29 +45,29 @@ class _ForgotPassword extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Expanded( - // add Expanded to have your dropdown button fill remaining space - child: DropdownButtonHideUnderline( - child: DropdownButton( - isExpanded: true, - value: selectedType, - iconSize: 40, - elevation: 16, - onChanged: (String newValue) => { - setState(() { - selectedType = newValue; - }) - }, - items: [ - 'Saudi Arabia', - 'Dubai', - ].map>( - (String value) { - return DropdownMenuItem( - value: value, - child: Text(value), - ); - }).toList()))), +// Expanded( +// // add Expanded to have your dropdown button fill remaining space +// child: DropdownButtonHideUnderline( +// child: DropdownButton( +// isExpanded: true, +// value: selectedType, +// iconSize: 40, +// elevation: 16, +// onChanged: (String newValue) => { +// setState(() { +// selectedType = newValue; +// }) +// }, +// items: [ +// 'Saudi Arabia', +// 'Dubai', +// ].map>( +// (String value) { +// return DropdownMenuItem( +// value: value, +// child: Text(value), +// ); +// }).toList()))), ], ), MobileNo(controller: mobileNo), @@ -80,12 +82,10 @@ class _ForgotPassword extends State { Row( children: [ Expanded( - child: RaisedButton( - color: Colors.grey, - textColor: Colors.white, - child: Text(TranslationBase.of(context).submit), - onPressed: () => {}, - )) + child: DefaultButton( + TranslationBase.of(context).submit, + () => {}, + )), ], ), ], diff --git a/lib/pages/login/login-type.dart b/lib/pages/login/login-type.dart index 8a5087a5..edd1bf3d 100644 --- a/lib/pages/login/login-type.dart +++ b/lib/pages/login/login-type.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; @@ -6,7 +7,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; class LoginType extends StatelessWidget { static int loginType = 0; @@ -28,14 +28,16 @@ class LoginType extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, ), AppText( TranslationBase.of(context).logintypeRadio, fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, + textAlign: TextAlign.start, + marginBottom: 20.0, + marginTop: 20.0, ), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -75,6 +77,7 @@ class LoginType extends StatelessWidget { fontSize: SizeConfig.textMultiplier * 2, + fontWeight: FontWeight.bold, ) ], ), @@ -112,6 +115,7 @@ class LoginType extends StatelessWidget { fontSize: SizeConfig.textMultiplier * 2, + fontWeight: FontWeight.bold, ) ], ), @@ -131,7 +135,7 @@ class LoginType extends StatelessWidget { child: AppText( TranslationBase.of(context).forgotPassword, fontSize: SizeConfig.textMultiplier * 2.5, - margin: 10, + marginTop: 20.0, underline: true))) ]), ), @@ -150,7 +154,7 @@ class LoginType extends StatelessWidget { REGISTER, ) }, - )) + )), ], ), ], diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index f2ece252..bda6e78e 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -74,7 +74,7 @@ class _Login extends State { child: AppText( TranslationBase.of(context).enterNationalId, fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, + textAlign: TextAlign.start, )), Expanded( flex: 3, @@ -94,7 +94,7 @@ class _Login extends State { loginType == 1 ? Icons.chrome_reader_mode : Icons.receipt, - color: Colors.red), + color: Color(0xFF40ACC9)), padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), hintText: loginType == 1 diff --git a/lib/pages/login/register.dart b/lib/pages/login/register.dart index 3ee13a4c..03e7e1ca 100644 --- a/lib/pages/login/register.dart +++ b/lib/pages/login/register.dart @@ -76,7 +76,7 @@ class _Register extends State { controller: nationalIDorFile, onChanged: (value) => validateForm(), prefixIcon: - Icon(Icons.chrome_reader_mode, color: Colors.red), + Icon(Icons.chrome_reader_mode, color: Color(0xFF40ACC9)), padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), hintText: TranslationBase.of(context).nationalID, diff --git a/lib/pages/login/welcome.dart b/lib/pages/login/welcome.dart index be406a55..419df302 100644 --- a/lib/pages/login/welcome.dart +++ b/lib/pages/login/welcome.dart @@ -1,15 +1,10 @@ -import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; -import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; class WelcomeLogin extends StatefulWidget { @override @@ -18,6 +13,7 @@ class WelcomeLogin extends StatefulWidget { class _WelcomeLogin extends State { bool isLoading = true; + @override void initState() { isLoading = true; @@ -40,25 +36,23 @@ class _WelcomeLogin extends State { mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, - ), + Image.asset('assets/images/DQ/dq_logo_icon.png', + height: 90, width: 90), Text( TranslationBase.of(context).welcome, - style: TextStyle(fontSize: 30), - textAlign: TextAlign.left, + style: TextStyle( + fontSize: 30, fontWeight: FontWeight.bold), + textAlign: TextAlign.start, ), Text( TranslationBase.of(context).welcomeText, style: TextStyle(fontSize: 24), - textAlign: TextAlign.left, + textAlign: TextAlign.start, ), Text( TranslationBase.of(context).welcomeText2, style: TextStyle(fontSize: 24), - textAlign: TextAlign.left, + textAlign: TextAlign.start, ), SizedBox( height: SizeConfig.realScreenHeight * .15, @@ -81,7 +75,7 @@ class _WelcomeLogin extends State { LOGIN_TYPE, ), }, - color: Colors.red[900], + color: Color(0xFF40ACC9), textColor: Colors.white, )) ], diff --git a/lib/pages/symptom-checker/info.dart b/lib/pages/symptom-checker/info.dart new file mode 100644 index 00000000..7906ba1a --- /dev/null +++ b/lib/pages/symptom-checker/info.dart @@ -0,0 +1,131 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; +import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/routes.dart'; + +class SymptomInfo extends StatefulWidget { + @override + _SymptomInfo createState() => new _SymptomInfo(); +} + +class _SymptomInfo extends State { + bool checkValue = false; + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).termsService, + isShowAppBar: true, + body: Padding( + padding: EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + TranslationBase.of(context).beforeUsing, + fontWeight: FontWeight.bold, + fontSize: 14, + // textAlign: TextAlign.center, + ), + Container( + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: Colors.white, + ), + padding: EdgeInsets.all(30), + margin: EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + AppText(TranslationBase.of(context).remeberthat, + fontSize: 16), + SizedBox( + height: 10, + ), + AppText( + '1. ' + TranslationBase.of(context).checkDiagnosis, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + AppText(TranslationBase.of(context).informational, + fontSize: 16), + SizedBox( + height: 10, + ), + AppText( + '2. ' + TranslationBase.of(context).notUseInEmbergency, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + AppText( + TranslationBase.of(context).notUseInEmbergencyDetails, + fontSize: 16), + AppText( + TranslationBase.of(context).notUseInEmbergencyCall, + underline: true, + color: Colors.blue, + fontSize: 16), + SizedBox( + height: 10, + ), + AppText( + '3.' + TranslationBase.of(context).dataSafe, + fontWeight: FontWeight.bold, + fontSize: 16, + ), + AppText(TranslationBase.of(context).dataSafeInfo, + fontSize: 16), + ], + ), + ), + Expanded( + flex: 1, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Padding( + padding: EdgeInsets.all(10), + child: CheckboxListTile( + title: AppText(TranslationBase.of(context).accept), + value: checkValue, + onChanged: (newValue) { + setState(() { + this.checkValue = newValue; + }); + }, + controlAffinity: ListTileControlAffinity + .leading, // <-- leading Checkbox + ), + ), + Row( + children: [ + Expanded( + child: DefaultButton( + TranslationBase.of(context).next, + () => { + if (checkValue == true) + { + Navigator.of(context).pushNamed( + SELECT_GENDER, + ) + } + }, + color: checkValue == true + ? Colors.black + : Colors.grey, + textColor: Colors.white, + )) + ], + ), + ], + )) + ], + ))); + } +} diff --git a/lib/pages/symptom-checker/select-gender.dart b/lib/pages/symptom-checker/select-gender.dart new file mode 100644 index 00000000..0b8be29d --- /dev/null +++ b/lib/pages/symptom-checker/select-gender.dart @@ -0,0 +1,124 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; +import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:diplomaticquarterapp/routes.dart'; +import 'package:flutter_xlider/flutter_xlider.dart'; + +class SelectGender extends StatefulWidget { + @override + _SelectGender createState() => new _SelectGender(); +} + +class _SelectGender extends State { + double slider = 22; + + @override + Widget build(BuildContext context) { + return AppScaffold( + appBarTitle: TranslationBase.of(context).gender, + isShowAppBar: true, + body: Padding( + padding: EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + //TranslationBase.of(context).beforeUsing, + TranslationBase.of(context).selectGender, + fontWeight: FontWeight.bold, + fontSize: 20, + // textAlign: TextAlign.center, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + AppText(TranslationBase.of(context).iAma, fontSize: 16), + SizedBox( + height: 10, + ), + Row( + children: [ + Expanded( + child: Container( + height: 200, + width: 150, + child: Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), + ), + shadowColor: Colors.red, + child: Image.asset( + 'assets/images/female_face.png')))), + Expanded( + child: Container( + height: 200, + width: 150, + child: Card( + shadowColor: Colors.red, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), + ), + child: Image.asset( + 'assets/images/male_face.png')))) + ], + ), + AppText(TranslationBase.of(context).selectAge, + fontSize: 25), + SizedBox( + height: 10, + ), + AppText( + TranslationBase.of(context).iAm + + ' ' + + slider.toString() + + ' ' + + TranslationBase.of(context) + .yearOld, //TranslationBase.of(context).remeberthat, + fontSize: 16), + SizedBox( + height: 30, + ), + FlutterSlider( + values: [slider], + max: 90, + min: 14, + onDragCompleted: (handlerIndex, lowerValue, upperValue) { + print(lowerValue); + print(upperValue); + setState(() { + slider = upperValue; + }); + }, + ), + ], + ), + Expanded( + flex: 1, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + Expanded( + child: DefaultButton( + TranslationBase.of(context).next, + () => { + Navigator.of(context).pushNamed( + SYMPTOM_CHECKER, + ) + }, + )) + ], + ), + ], + )) + ], + ))); + } +} diff --git a/lib/pages/symptom-checker/symtom-checker.dart b/lib/pages/symptom-checker/symtom-checker.dart index f7475abf..c088caab 100644 --- a/lib/pages/symptom-checker/symtom-checker.dart +++ b/lib/pages/symptom-checker/symtom-checker.dart @@ -1,3 +1,5 @@ +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/cupertino.dart'; import 'package:flutter/material.dart'; @@ -10,7 +12,10 @@ class SymptomChecker extends StatelessWidget { isShowAppBar: true, appBarTitle: 'Symptom Checker', body: Center( - child: SvgPicture.string( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SvgPicture.string( ''' @@ -38,6 +43,19 @@ class SymptomChecker extends StatelessWidget { -'''))); +'''), + Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + child: DefaultButton( + TranslationBase.of(context).next, + () => {}, + )) + ], + )) + ], + ))); } } diff --git a/lib/routes.dart b/lib/routes.dart index 8d109983..ada7c54c 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -10,6 +10,8 @@ import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/register.dart'; import 'package:diplomaticquarterapp/pages/family/add-family_type.dart'; import 'package:diplomaticquarterapp/pages/family/add-family-member.dart'; +import 'package:diplomaticquarterapp/pages/symptom-checker/info.dart'; +import 'package:diplomaticquarterapp/pages/symptom-checker/select-gender.dart'; import 'package:diplomaticquarterapp/pages/symptom-checker/symtom-checker.dart'; const String INIT_ROUTE = '/'; @@ -27,6 +29,8 @@ const String ADD_FAMILY_MEMBER_TYPE = 'add-family-member-type'; const String ADD_FAMILY_MEMBER = 'add-family-member'; const String LIVE_CARE = 'live-care'; const String SYMPTOM_CHECKER = 'symptom-checker'; +const String SYMPTOM_CHECKER_INFO = 'symptom-checker-info'; +const String SELECT_GENDER = 'select-gender'; var routes = { HOME: (_) => LandingPage(), WELCOME_LOGIN: (_) => WelcomeLogin(), @@ -40,5 +44,7 @@ var routes = { ADD_FAMILY_MEMBER_TYPE: (_) => AddFamilyMemberType(), ADD_FAMILY_MEMBER: (_) => AddMember(), LIVE_CARE: (_) => LiveCareHome(), - SYMPTOM_CHECKER: (_) => SymptomChecker() + SYMPTOM_CHECKER: (_) => SymptomChecker(), + SYMPTOM_CHECKER_INFO: (_) => SymptomInfo(), + SELECT_GENDER: (_) => SelectGender() }; diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index 4b5dc264..39117783 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -66,7 +66,8 @@ class DoctorsListService extends BaseService { // "Latitude": 0, // "Longitude": 0, // "License": true, - "IsVoiceCommand": doctorId != null && doctorId.length > 0 ? true : false, + "SearchForVoiceCommand": + doctorId != null && doctorId.length > 0 ? true : false, "DoctorIDsList": doctorId, "Latitude": lat != null ? lat.toString() : 0, "Longitude": long != null ? long.toString() : 0, @@ -212,8 +213,8 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future getDoctorScheduledFreeSlots( - int docID, int clinicID, int projectID, int serviceID, BuildContext context) async { + Future getDoctorScheduledFreeSlots(int docID, int clinicID, + int projectID, int serviceID, BuildContext context) async { Map request; var languageID = await sharedPref.getString(APP_LANGUAGE); Request req = appGlobal.getPublicRequest(); @@ -241,10 +242,10 @@ class DoctorsListService extends BaseService { await baseAppClient.post(GET_LIVECARE_SCHEDULE_DOCTOR_TIME_SLOTS, onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } @@ -301,8 +302,14 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future insertLiveCareScheduleAppointment(int docID, int clinicID, int projectID, int serviceID, - String selectedTime, String selectedDate, BuildContext context) async { + Future insertLiveCareScheduleAppointment( + int docID, + int clinicID, + int projectID, + int serviceID, + String selectedTime, + String selectedDate, + BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -348,10 +355,10 @@ class DoctorsListService extends BaseService { await baseAppClient.post(INSERT_LIVECARE_SCHEDULE_APPOINTMENT, onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } @@ -437,10 +444,10 @@ class DoctorsListService extends BaseService { await baseAppClient.post(GET_PATIENT_SHARE_LIVECARE, onSuccess: (response, statusCode) async { - localRes = response['OnlineCheckInAppointments'][0]; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response['OnlineCheckInAppointments'][0]; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } @@ -519,8 +526,8 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future confirmAppointment( - int appoNo, int clinicID, int projectID, bool isLiveCare, BuildContext context) async { + Future confirmAppointment(int appoNo, int clinicID, int projectID, + bool isLiveCare, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -564,9 +571,8 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - - Future insertVIDARequest( - int appoNo, int clinicID, int projectID, int serviceID, int docID, BuildContext context) async { + Future insertVIDARequest(int appoNo, int clinicID, int projectID, + int serviceID, int docID, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -613,10 +619,10 @@ class DoctorsListService extends BaseService { await baseAppClient.post(INSERT_VIDA_REQUEST, onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } diff --git a/lib/uitl/gif_loader_dialog_utils.dart b/lib/uitl/gif_loader_dialog_utils.dart new file mode 100644 index 00000000..52e24739 --- /dev/null +++ b/lib/uitl/gif_loader_dialog_utils.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +import '../widgets/Loader/gif_loader_container.dart'; + +class GifLoaderDialogUtils { + static AlertDialog dialog = AlertDialog( + backgroundColor: Colors.transparent, + content: GifLoaderContainer(), + ); + + static showMyDialog(BuildContext context) { + showDialog(context: context, child: dialog); + } + + static hideDialog(BuildContext context) { + Navigator.of(context).pop(); + } +} diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index e1559bd4..d89a8b1b 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:diplomaticquarterapp/config/localized_values.dart'; +import 'package:diplomaticquarterapp/pages/symptom-checker/select-gender.dart'; import 'package:flutter/foundation.dart' show SynchronousFuture; import 'package:flutter/material.dart'; @@ -95,9 +96,11 @@ class TranslationBase { String get confirm => localizedValues['confirm'][locale.languageCode]; - String get confirmLiveCare => localizedValues['confirmLiveCare'][locale.languageCode]; + String get confirmLiveCare => + localizedValues['confirmLiveCare'][locale.languageCode]; - String get waitingForDoctor => localizedValues['waitingForDoctor'][locale.languageCode]; + String get waitingForDoctor => + localizedValues['waitingForDoctor'][locale.languageCode]; String get confirmLater => localizedValues['confirmLater'][locale.languageCode]; @@ -119,6 +122,9 @@ class TranslationBase { String get loginregister => localizedValues['loginregister'][locale.languageCode]; + String get poweredBy => + localizedValues['poweredBy'][locale.languageCode]; + String get welcome => localizedValues['welcome'][locale.languageCode]; String get welcomeText => @@ -145,6 +151,9 @@ class TranslationBase { String get forgotPassword => localizedValues['forgotFileNo'][locale.languageCode]; + String get forgotFileNoTitle => + localizedValues['forgotFileNoTitle'][locale.languageCode]; + String get enterNationalId => localizedValues['enter-national-id'][locale.languageCode]; @@ -674,17 +683,51 @@ class TranslationBase { localizedValues['DoctorResponses'][locale.languageCode]; String get newDes => localizedValues['New'][locale.languageCode]; String get all => localizedValues['All'][locale.languageCode]; - String get questionHere => localizedValues['QuestionHere'][locale.languageCode]; - String get viewDoctorResponses => localizedValues['ViewDoctorResponses'][locale.languageCode]; - String get serviceInformation => localizedValues['ServiceInformation'][locale.languageCode]; - String get homeHealthCare => localizedValues['HomeHealthCare'][locale.languageCode]; - String get homeHealthCareText => localizedValues['HomeHealthCareText'][locale.languageCode]; - String get loginRegister => localizedValues['LoginRegister'][locale.languageCode]; + String get questionHere => + localizedValues['QuestionHere'][locale.languageCode]; + String get viewDoctorResponses => + localizedValues['ViewDoctorResponses'][locale.languageCode]; + String get serviceInformationButton => + localizedValues['ServiceInformationButton'][locale.languageCode]; + String get serviceInformationTitle => + localizedValues['ServiceInformationTitle'][locale.languageCode]; + String get serviceInformation => + localizedValues['ServiceInformation'][locale.languageCode]; + String get homeHealthCare => + localizedValues['HomeHealthCare'][locale.languageCode]; + String get homeHealthCareText => + localizedValues['HomeHealthCareText'][locale.languageCode]; + String get loginRegister => + localizedValues['LoginRegister'][locale.languageCode]; String get orderLog => localizedValues['OrderLog'][locale.languageCode]; - String get serviceInformationButton => localizedValues['ServiceInformationButton'][locale.languageCode]; - String get serviceInformationTitle => localizedValues['ServiceInformationTitle'][locale.languageCode]; String get infoLab => localizedValues['info-lab'][locale.languageCode]; - String get infoRadiology => localizedValues['info-radiology'][locale.languageCode]; + String get infoRadiology => + localizedValues['info-radiology'][locale.languageCode]; + + String get termsService => + localizedValues['TermsService'][locale.languageCode]; + String get beforeUsing => localizedValues['Beforeusing'][locale.languageCode]; + String get accept => localizedValues['accept'][locale.languageCode]; + String get dataSafeInfo => + localizedValues['data-safe-info'][locale.languageCode]; + String get dataSafe => localizedValues['data-safe'][locale.languageCode]; + String get informational => + localizedValues['informational'][locale.languageCode]; + String get checkDiagnosis => + localizedValues['check-diagnosis'][locale.languageCode]; + String get remeberthat => localizedValues['remeberthat'][locale.languageCode]; + String get notUseInEmbergency => + localizedValues['not-use-in-emerbency'][locale.languageCode]; + String get notUseInEmbergencyDetails => + localizedValues['not-use-in-emerbency-details'][locale.languageCode]; + String get notUseInEmbergencyCall => + localizedValues['not-use-in-emerbency-details-call'][locale.languageCode]; + String get selectGender => + localizedValues['select-gender'][locale.languageCode]; + String get iAma => localizedValues['i-am-a'][locale.languageCode]; + String get selectAge => localizedValues['select-age'][locale.languageCode]; + String get iAm => localizedValues['i-am'][locale.languageCode]; + String get yearOld => localizedValues['years-old'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/Loader/gif_loader_container.dart b/lib/widgets/Loader/gif_loader_container.dart new file mode 100644 index 00000000..6fb031a3 --- /dev/null +++ b/lib/widgets/Loader/gif_loader_container.dart @@ -0,0 +1,43 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter_gifimage/flutter_gifimage.dart'; + +class GifLoaderContainer extends StatefulWidget { + @override + _GifLoaderContainerState createState() => _GifLoaderContainerState(); +} + +class _GifLoaderContainerState extends State + with TickerProviderStateMixin { + GifController controller1; + + @override + void initState() { + controller1 = GifController(vsync: this); + + WidgetsBinding.instance.addPostFrameCallback((_) { + controller1.repeat( + min: 0, max: 12, period: Duration(milliseconds: 750), reverse: true); + }); + super.initState(); + } + + @override + void dispose() { + controller1.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Center( + //progress-loading.gif + child: Container( + margin: EdgeInsets.only(bottom: 40), + child: GifImage( + controller: controller1, + image: AssetImage( + "assets/images/progress-loading.gif"), //NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"), + ), + )); + } +} \ No newline at end of file diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 59d9bfa0..8e856ed2 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -1,6 +1,5 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; -import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart'; @@ -15,6 +14,7 @@ import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; + import '../../config/size_config.dart'; import '../../locator.dart'; import 'drawer_item_widget.dart'; @@ -35,7 +35,8 @@ class _AppDrawerState extends State { var sharedPref = new AppSharedPreferences(); var familyFileProvider = FamilyFilesProvider(); AuthenticatedUser user; - AuthenticatedUserObject authenticatedUserObject = locator(); + AuthenticatedUserObject authenticatedUserObject = + locator(); @override Widget build(BuildContext context) { @@ -59,7 +60,8 @@ class _AppDrawerState extends State { child: Column( children: [ Container( - child: Image.asset('assets/images/logo.png'), + child: + Image.asset('assets/images/DQ/DQ_logo.png'), margin: EdgeInsets.all( SizeConfig.imageSizeMultiplier * 4), ), @@ -289,17 +291,29 @@ class _AppDrawerState extends State { child: Column( children: [ Container( - // This align moves the children to the bottom child: Align( alignment: FractionalOffset.bottomCenter, child: Container( - child: Column( - children: [ - Text("Powered by"), - Image.asset( - 'assets/images/cs_logo_container.png', - width: SizeConfig.imageSizeMultiplier * 30, - ) + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Column( + children: [ + Text(TranslationBase.of(context).poweredBy), + Image.asset( + 'assets/images/cs_logo_container.png', + width: SizeConfig.imageSizeMultiplier * 30, + ) + ], + ), + Column( + children: [ + Image.asset( + 'assets/images/new-design/vidamobile.png', + width: SizeConfig.imageSizeMultiplier * 25, + ) + ], + ), ], ), ), diff --git a/lib/widgets/mobile-no/mobile_no.dart b/lib/widgets/mobile-no/mobile_no.dart index 399e346d..d3e62153 100644 --- a/lib/widgets/mobile-no/mobile_no.dart +++ b/lib/widgets/mobile-no/mobile_no.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; class MobileNo extends StatefulWidget { final bool disabled; + // final String data; final List countries = [ new Countries(name: 'Saudi Arabia', code: '966'), @@ -20,6 +21,7 @@ class MobileNo extends StatefulWidget { final TextEditingController controller; final Function onNumberChange; final Function onCountryChange; + MobileNo( {this.disabled = false, this.marginTop = 0, @@ -38,6 +40,7 @@ class MobileNo extends StatefulWidget { class _MobileNo extends State { var _selectedType = '966'; String countryCode = '966'; + @override Widget build(BuildContext context) { return Visibility( @@ -45,8 +48,18 @@ class _MobileNo extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Expanded( - // add Expanded to have your dropdown button fill remaining space + Container( + margin: EdgeInsets.only(bottom: 10.0), + height: 60.0, + decoration: BoxDecoration( + color: Colors.white, + border: Border.all( + color: Colors.grey[400], + width: 1.0, + ), + borderRadius: BorderRadius.circular(10), + ), + width: MediaQuery.of(context).size.width * 0.89, child: Padding( padding: EdgeInsets.all(10), child: DropdownButtonHideUnderline( @@ -82,14 +95,13 @@ class _MobileNo extends State { flex: 1, child: Icon( Icons.phone, - color: Colors.red, + color: Color(0xFF40ACC9), )), Expanded( flex: 1, child: Text( countryCode, overflow: TextOverflow.clip, - )), Expanded( flex: 4, @@ -122,5 +134,6 @@ class _MobileNo extends State { class Countries { final String name; final String code; + Countries({this.name, this.code}); } diff --git a/lib/widgets/others/app_expandable_notifier.dart b/lib/widgets/others/app_expandable_notifier.dart index 8911308e..b68ae1da 100644 --- a/lib/widgets/others/app_expandable_notifier.dart +++ b/lib/widgets/others/app_expandable_notifier.dart @@ -71,7 +71,7 @@ class _AppExpandableNotifier extends State { height: 28.0, width: 30.0, decoration: new BoxDecoration( - color: Colors.red, + color: Color(0xFF40ACC9), shape: BoxShape.circle, ), child: new Center( diff --git a/lib/widgets/others/app_scaffold_widget.dart b/lib/widgets/others/app_scaffold_widget.dart index 8d882291..6e6b9595 100644 --- a/lib/widgets/others/app_scaffold_widget.dart +++ b/lib/widgets/others/app_scaffold_widget.dart @@ -51,7 +51,8 @@ class AppScaffold extends StatelessWidget { this.floatingActionButton, this.title, this.description, - this.isShowDecPage = true, this.isBottomBar}); + this.isShowDecPage = true, + this.isBottomBar}); @override Widget build(BuildContext context) { @@ -69,7 +70,8 @@ class AppScaffold extends StatelessWidget { ), title: Texts(authenticatedUserObject.isLogin || !isShowDecPage ? appBarTitle.toUpperCase() - : TranslationBase.of(context).serviceInformationTitle),leading: Builder( + : TranslationBase.of(context).serviceInformationTitle), + leading: Builder( builder: (BuildContext context) { return ArrowBack(); }, @@ -80,7 +82,10 @@ class AppScaffold extends StatelessWidget { icon: Icon(FontAwesomeIcons.home), color: Colors.white, onPressed: () { - Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => LandingPage()), (Route r) => false); + Navigator.pushAndRemoveUntil( + context, + MaterialPageRoute(builder: (context) => LandingPage()), + (Route r) => false); }, ), ], @@ -91,14 +96,14 @@ class AppScaffold extends StatelessWidget { title: appBarTitle, description: description, ) - :baseViewModel != null - ? NetworkBaseView( - child: buildBodyWidget(), - baseViewModel: baseViewModel, - ) - : buildBodyWidget(), + : baseViewModel != null + ? NetworkBaseView( + child: buildBodyWidget(), + baseViewModel: baseViewModel, + ) + : buildBodyWidget(), bottomSheet: bottomSheet, - floatingActionButton: floatingActionButton ?? floatingActionButton, + //floatingActionButton: floatingActionButton ?? floatingActionButton, // bottomNavigationBar: // this.isBottomBar == true ? BottomBarSearch() : SizedBox() // floatingActionButton: FloatingSearchButton(), diff --git a/lib/widgets/others/network_base_view.dart b/lib/widgets/others/network_base_view.dart index 78c47783..5e297d18 100644 --- a/lib/widgets/others/network_base_view.dart +++ b/lib/widgets/others/network_base_view.dart @@ -1,15 +1,32 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; +import 'package:diplomaticquarterapp/widgets/Loader/gif_loader_container.dart'; import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gifimage/flutter_gifimage.dart'; -class NetworkBaseView extends StatelessWidget { +class NetworkBaseView extends StatefulWidget { final BaseViewModel baseViewModel; final Widget child; NetworkBaseView({Key key, this.baseViewModel, this.child}); + @override + _NetworkBaseViewState createState() => _NetworkBaseViewState(); +} + +class _NetworkBaseViewState extends State{ + + @override + void initState() { + super.initState(); + } + @override + void dispose() { + super.dispose(); + } + @override Widget build(BuildContext context) { return Container( @@ -18,22 +35,34 @@ class NetworkBaseView extends StatelessWidget { } buildBaseViewWidget() { - switch (baseViewModel.state) { + switch (widget.baseViewModel.state) { case ViewState.ErrorLocal: case ViewState.Idle: case ViewState.BusyLocal: - return child; + return widget.child; break; case ViewState.Busy: - return AppCircularProgressIndicator(); + return Stack( + children: [ + Container( + height: MediaQuery.of(context).size.height, + color: Colors.grey.withOpacity(0.6), + ), + GifLoaderContainer() + ], + ); break; case ViewState.Error: return Center( child: AppEmbeddedError( - error: baseViewModel.error, + error: widget.baseViewModel.error, ), ); break; } } + } + + + diff --git a/lib/widgets/text/app_texts_widget.dart b/lib/widgets/text/app_texts_widget.dart index e3989719..bba514be 100644 --- a/lib/widgets/text/app_texts_widget.dart +++ b/lib/widgets/text/app_texts_widget.dart @@ -25,7 +25,8 @@ class AppText extends StatefulWidget { {this.color = Colors.black, this.fontWeight = FontWeight.normal, this.fontSize, - this.fontFamily = 'WorkSans', +// this.fontFamily = 'WorkSans', + this.fontFamily, this.margin, this.marginTop = 0, this.marginRight = 0, diff --git a/pubspec.yaml b/pubspec.yaml index 2cf4bf4a..dd2225f9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -70,6 +70,7 @@ dependencies: # Notification Banner dropdown_banner: ^1.4.0 + flutter_xlider: ^3.4.0 # flutter_local_notifications: # charts @@ -126,7 +127,6 @@ dependencies: # Carousel carousel_pro: ^1.0.0 - #local_notifications flutter_local_notifications: ^1.5.0 @@ -171,6 +171,8 @@ flutter: - assets/images/medical/ - assets/images/new-design/ - assets/images/login/ + - assets/images/SmartWatches/ + - assets/images/DQ/ - assets/json/ - assets/sounds/ - assets/images/svg/