diff --git a/assets/images/new-design/NFCIcon_option2.png b/assets/images/new-design/NFCIcon_option2.png new file mode 100644 index 00000000..938eec27 Binary files /dev/null and b/assets/images/new-design/NFCIcon_option2.png differ diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index e6ae2c98..cfd3cb12 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1335,9 +1335,9 @@ const Map localizedValues = { "تسجيل الذهاب الى الطوارئ عبر الإنترنت هو فقط للحالات  التي لا تهدد الحياة يجب الاتصل بالهلال الأحمر (رقم) أو الذهاب إلى أقرب قسم طوارئ إذا كان هناك علامات السكتة الدماغية أو النوبة القلبية او هناك نوبة تشنج او حالة فقدان الوعي او وجود إصابة تهدد أحد الأطراف او تهدد الحياة او وجود إصابات خطيرة" }, "MRN": {"en": "MRN", "ar": "ایم آر این"}, - "appointment-date": {"en": "Appointment Date", "ar": "تقرری کی تاریخ"}, - "appointment-no": {"en": "Appointment No", "ar": "تقرری نمبر"}, - "insurance-id": {"en": "Insurance ID", "ar": "انشورنس ID"}, + "appointment-date": {"en": "Appointment Date", "ar": "تاريخ الموعد"}, + "appointment-no": {"en": "Appointment No", "ar": "رقم الموعد"}, + "insurance-id": {"en": "Insurance ID", "ar": "رقم العضويه"}, "chiefComplaints": {"en": "Chief Complaints", "ar": "الشكوى الرئيسة"}, "errorChiefComplaints": {"en": "Please Chief Complaints", "ar": "يرجى ادخال الشكوى الرئيسة"}, "errorExpectedArrivalTimes": {"en": "Please Expected arrival time", "ar": "يرجى ادخال الوقت المتوقع للوصول"}, @@ -1467,4 +1467,10 @@ const Map localizedValues = { "online-clinics": {"en": "Online Clinics: ", "ar": "​العيادات المفتوحة: "}, "offline-clinics": {"en": "Offline Clinics: ", "ar": "العيادات المغلقة: "}, "clinic-schedule": {"en": "Clinic Schedule", "ar": "جدول العيادة"}, + "discount": { "en": "Discount:", "ar": "الخصم:" }, + "total-VAT": { "en": "VAT", "ar": "القيمة المضافة" }, + "paid": { "en": "Paid", "ar": "المدفوع" }, + "dental-insurance": { "en": "Insurance", "ar": "التأمين" }, + "drivethru-appo": { "en": "Drive Thru Appointment", "ar": "موعد من داخل السيارة" }, + "upcoming-QR-NFC": { "en": "Use the NFC or QR Code to Check-In", "ar": "استخدم NFC أو رمزQR لتسجيل الوصول" }, }; diff --git a/lib/core/service/insurance_service.dart b/lib/core/service/insurance_service.dart index 5b78d053..4f0ff3dc 100644 --- a/lib/core/service/insurance_service.dart +++ b/lib/core/service/insurance_service.dart @@ -68,11 +68,11 @@ class InsuranceCardService extends BaseService { Future getInsuranceApproval({int appointmentNo}) async { hasError = false; if (appointmentNo != null) { - _requestInsuranceApprovalModel.appointmentNo = appointmentNo; + _requestInsuranceApprovalModel.appointmentNo = appointmentNo; _requestInsuranceApprovalModel.eXuldAPPNO = 0; _requestInsuranceApprovalModel.projectID = 0; } else { - _requestInsuranceApprovalModel.appointmentNo = 0; + _requestInsuranceApprovalModel.appointmentNo = 0; _requestInsuranceApprovalModel.eXuldAPPNO = 0; _requestInsuranceApprovalModel.projectID = 0; } @@ -99,21 +99,25 @@ class InsuranceCardService extends BaseService { } Future getSharedRecordByStatus() async { - try { - dynamic localRes; - var request = GetAllSharedRecordsByStatusReq(); - request.status = 0; - await baseAppClient.post(GET_SHARED_RECORD_BY_STATUS, onSuccess: (dynamic response, int statusCode) { - localRes = response; - }, onFailure: (String error, int statusCode) { - AppToast.showErrorToast(message: error); + if (await sharedPref.getObject(FAMILY_FILE) != null) { + return Future.value(GetAllSharedRecordsByStatusResponse.fromJson(await sharedPref.getObject(FAMILY_FILE))); + } else { + try { + dynamic localRes; + var request = GetAllSharedRecordsByStatusReq(); + request.status = 0; + await baseAppClient.post(GET_SHARED_RECORD_BY_STATUS, onSuccess: (dynamic response, int statusCode) { + localRes = response; + }, onFailure: (String error, int statusCode) { + AppToast.showErrorToast(message: error); + throw error; + }, body: request.toJson()); + sharedPref.setObject(FAMILY_FILE, localRes); + getAllSharedRecordsByStatusResponse = GetAllSharedRecordsByStatusResponse.fromJson(localRes); + } catch (error) { + print(error); throw error; - }, body: request.toJson()); - sharedPref.setObject(FAMILY_FILE, localRes); - getAllSharedRecordsByStatusResponse = GetAllSharedRecordsByStatusResponse.fromJson(localRes); - } catch (error) { - print(error); - throw error; + } } } diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart index 828b4622..070187a0 100644 --- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart +++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart @@ -14,6 +14,7 @@ import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/my_web_view.dar import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.dart'; import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; +import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/ChildVaccines/child_vaccines_page.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart'; import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart'; @@ -24,6 +25,7 @@ import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page_pharmcy.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; +import 'package:diplomaticquarterapp/pages/medical/medical_profile_page_new.dart'; import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/pages/symptom-checker/info.dart'; @@ -176,7 +178,7 @@ class _AllHabibMedicalServiceState extends State { Navigator.push( context, FadePage( - page: MedicalProfilePage(), + page: MedicalProfilePageNew(), ), ); }, @@ -197,9 +199,7 @@ class _AllHabibMedicalServiceState extends State { onTap: () => Navigator.push( context, FadePage( - page: BookingOptions( - isAppbar: true, - ), + page: Search(), ), ), imageLocation: 'assets/images/new-design/booking_icon_active.png', @@ -230,7 +230,7 @@ class _AllHabibMedicalServiceState extends State { context, FadePage(page: CovidDrivethruLocation()), ), - imageLocation: 'assets/images/al-habib_online_payment_service_icon.png', + imageLocation: 'assets/images/covid-car.png', title: TranslationBase.of(context).covid19_driveThrueTest, ), ServicesContainer( @@ -276,7 +276,7 @@ class _AllHabibMedicalServiceState extends State { page: MyFamily(), ), ), - imageLocation: 'assets/images/new-design/family_menu_icon_red.png', + imageLocation: 'assets/images/new-design/family_icon_bottom_bar.png', title: TranslationBase.of(context).myFamily, ), if (projectViewModel.havePrivilege(35)) @@ -296,14 +296,6 @@ class _AllHabibMedicalServiceState extends State { imageLocation: 'assets/images/new-design/upcoming_icon_bottom_bar.png', title: TranslationBase.of(context).todoList, ), - // if (projectViewModel.havePrivilege(42)) - // ServicesContainer( - // onTap: () => Navigator.push( - // context, - // FadePage(page: SymptomInfo()), - // ), - // imageLocation: 'assets/images/new-design/body_icon.png', - // title: TranslationBase.of(context).symptomCheckerTitle), if (projectViewModel.havePrivilege(36)) ServicesContainer( onTap: () => Navigator.push( diff --git a/lib/pages/AlHabibMedicalService/health_converter.dart b/lib/pages/AlHabibMedicalService/health_converter.dart index 5ae80183..27c2a05c 100644 --- a/lib/pages/AlHabibMedicalService/health_converter.dart +++ b/lib/pages/AlHabibMedicalService/health_converter.dart @@ -16,9 +16,13 @@ class HealthConverter extends StatefulWidget { class _HealthConverterState extends State { @override Widget build(BuildContext context) { + List myMedicalList = myOptionsList(context); + return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).converters, body: Column( children: [ @@ -26,72 +30,66 @@ class _HealthConverterState extends State { width: double.infinity, height: 30, ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: BloodSugar()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bloodSugar, - imagePath: 'blood_sugar_icon.png', - subTitle: TranslationBase.of(context).sugar, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BloodCholesterol(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bloodCholesterol, - imagePath: 'blood_cholesterol_icon.png', - subTitle: TranslationBase.of(context).cholesterol, - ), - ), - ), - ], + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: myMedicalList.length, + itemBuilder: (BuildContext context, int index) { + return myMedicalList[index]; + }, + ), ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: Triglycerides(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).triglycerides, - imagePath: 'triglycerides_blood_icon.png', - subTitle: TranslationBase.of(context).fatInBlood, - ), - ), - ), - Expanded( - flex: 1, - child: Container(), - ), - ], - ) ], ), ); } + + List myOptionsList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BloodSugar()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bloodSugar, + imagePath: 'assets/images/new-design/blood_sugar_icon.png', + subTitle: TranslationBase.of(context).sugar, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BloodCholesterol()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bloodCholesterol, + imagePath: 'assets/images/new-design/blood_cholesterol_icon.png', + subTitle: TranslationBase.of(context).cholesterol, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: Triglycerides()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).triglycerides, + imagePath: 'assets/images/new-design/triglycerides_blood_icon.png', + subTitle: TranslationBase.of(context).fatInBlood, + isPngImage: true, + ), + )); + return medical; + } } diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart index ac31b98c..1b25f443 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart @@ -7,7 +7,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/services.dart'; -const activeCardColor = Color(0xff70777A); +const activeCardColor = Color(0xffD02127); const inactiveCardColor = Color(0xffFAFAFd); class BloodCholesterol extends StatefulWidget { @@ -65,6 +65,8 @@ class _BloodCholesterolState extends State { isShowAppBar: true, appBarTitle: TranslationBase.of(context).bloodCholesterol, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, body: Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart index e9369b82..ebc41150 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart @@ -1,13 +1,12 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -const activeCardColor = Color(0xff515a5d); +const activeCardColor = Color(0xffD02127); const activeTextColor = Color(0xffFAFAFA); const inactiveCardColor = Color(0xffFAFAFA); const inactiveTextColor = Color(0xff60686B); @@ -81,6 +80,8 @@ class _BloodSugarState extends State { return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).bloodSugarConversion, body: Container( padding: const EdgeInsets.all(16.0), @@ -89,13 +90,11 @@ class _BloodSugarState extends State { Expanded( child: SingleChildScrollView( child: Column( - //crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( margin: EdgeInsets.symmetric(horizontal: 8), child: Text( TranslationBase.of(context).convertBloodSugarStatement, - //textAlign: TextAlign.center, style: TextStyle(fontSize: 20.0), ), ), @@ -105,13 +104,11 @@ class _BloodSugarState extends State { Container( color: Colors.white, child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 16.0, horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 8), child: Column( children: [ Padding( - padding: - const EdgeInsets.symmetric(horizontal: 16.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Row( children: [ Texts( @@ -144,19 +141,16 @@ class _BloodSugarState extends State { boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), - spreadRadius: 3, + spreadRadius: 1, blurRadius: 7, - offset: Offset(0, - 3), // changes position of shadow + offset: Offset(0, 3), // changes position of shadow ), ], color: cardMGColor, - borderRadius: - BorderRadius.circular(3.0), + borderRadius: BorderRadius.circular(3.0), ), child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 0.0, horizontal: 18.0), + padding: const EdgeInsets.symmetric(vertical: 0.0, horizontal: 18.0), child: Texts( 'MG/DLt TO \nMMOL/L', color: textMGColor, @@ -180,21 +174,18 @@ class _BloodSugarState extends State { height: 65.0, decoration: BoxDecoration( color: cardMMOLColor, - borderRadius: - BorderRadius.circular(3.0), + borderRadius: BorderRadius.circular(3.0), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 3, blurRadius: 7, - offset: Offset(0, - 3), // changes position of shadow + offset: Offset(0, 3), // changes position of shadow ), ], ), child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Texts( 'MMOL/L TO MG/DLt ', color: textMMOLColor, @@ -229,8 +220,7 @@ class _BloodSugarState extends State { ], keyboardType: TextInputType.number, decoration: InputDecoration( - labelText: - TranslationBase.of(context).enterReadingValue, + labelText: TranslationBase.of(context).enterReadingValue, enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.white), ), @@ -240,8 +230,7 @@ class _BloodSugarState extends State { focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.white), ), - border: UnderlineInputBorder( - borderSide: BorderSide(color: Colors.white)), + border: UnderlineInputBorder(borderSide: BorderSide(color: Colors.white)), labelStyle: TextStyle( color: Colors.black87, ), @@ -275,8 +264,7 @@ class _BloodSugarState extends State { style: TextStyle(fontSize: 35.0), ), Padding( - padding: - EdgeInsets.only(left: 4.0, top: 10.0), + padding: EdgeInsets.only(left: 4.0, top: 10.0), child: Text( unit.toString(), style: TextStyle( @@ -299,18 +287,12 @@ class _BloodSugarState extends State { ), Container( margin: EdgeInsets.symmetric(horizontal: 16), - child: SecondaryButton( - label: TranslationBase.of(context).calculate, - color: Color(0XFF515A5D), - onTap: () { - setState(() { - _visible == false - ? _visible = !_visible - : _visible = _visible; - calculateBloodSugar(); - }); - }, - ), + child: DefaultButton(TranslationBase.of(context).calculate, () { + setState(() { + _visible == false ? _visible = !_visible : _visible = _visible; + calculateBloodSugar(); + }); + }), ), ], ), diff --git a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart index 7c821055..35184f7b 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart @@ -67,6 +67,8 @@ class _TriglyceridesState extends State { isShowAppBar: true, appBarTitle: TranslationBase.of(context).triglycerides, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, body: Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( diff --git a/lib/pages/AlHabibMedicalService/parking_page.dart b/lib/pages/AlHabibMedicalService/parking_page.dart index f3620917..864beb98 100644 --- a/lib/pages/AlHabibMedicalService/parking_page.dart +++ b/lib/pages/AlHabibMedicalService/parking_page.dart @@ -1,16 +1,16 @@ -import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:maps_launcher/maps_launcher.dart'; -import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:provider/provider.dart'; + import '../../d_q_icons_icons.dart'; class ParkingPage extends StatelessWidget { @@ -21,11 +21,11 @@ class ParkingPage extends StatelessWidget { onModelReady: (model) => model.getIsSaveParking(), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).parking, description: TranslationBase.of(context).parkingDescription, - imagesInfo: [ - ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true) - ], + imagesInfo: [ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true)], body: SingleChildScrollView( padding: EdgeInsets.all(12), child: !model.isSavePark @@ -61,10 +61,7 @@ class ParkingPage extends StatelessWidget { child: Container( height: 150, padding: EdgeInsets.all(8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: Colors.white, - shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, @@ -86,16 +83,13 @@ class ParkingPage extends StatelessWidget { Container( padding: EdgeInsets.all(8), width: double.infinity, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), height: 70, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).showMyPark), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.floorDescriptionN - : model.qrParkingModel.floorDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.floorDescriptionN : model.qrParkingModel.floorDescription), ], ), ), @@ -103,8 +97,7 @@ class ParkingPage extends StatelessWidget { height: 15, ), Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), padding: EdgeInsets.all(8), width: double.infinity, height: 70, @@ -112,9 +105,7 @@ class ParkingPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).gate), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.gateDescriptionN - : model.qrParkingModel.gateDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.gateDescriptionN : model.qrParkingModel.gateDescription), ], ), ), @@ -122,8 +113,7 @@ class ParkingPage extends StatelessWidget { height: 15, ), Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), padding: EdgeInsets.all(8), width: double.infinity, height: 70, @@ -131,9 +121,7 @@ class ParkingPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).building), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.buildingDescriptionN - : model.qrParkingModel.buildingDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.buildingDescriptionN : model.qrParkingModel.buildingDescription), ], ), ), @@ -142,17 +130,14 @@ class ParkingPage extends StatelessWidget { ), Container( padding: EdgeInsets.all(8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), width: double.infinity, height: 70, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).branch), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.branchDescriptionN - : model.qrParkingModel.branchDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.branchDescriptionN : model.qrParkingModel.branchDescription), ], ), ), @@ -170,13 +155,7 @@ class ParkingPage extends StatelessWidget { children: [ Container( width: MediaQuery.of(context).size.width * 0.9, - child: SecondaryButton( - onTap: () async { - model.readQr(); - }, - label: TranslationBase.of(context).readBarcode, - loading: model.state == ViewState.BusyLocal, - textColor: Theme.of(context).backgroundColor), + child: DefaultButton(TranslationBase.of(context).readBarcode, () => {model.readQr()}), ), ], ), @@ -189,16 +168,14 @@ class ParkingPage extends StatelessWidget { children: [ Container( width: MediaQuery.of(context).size.width * 0.9, - child: SecondaryButton( - onTap: () async { - MapsLauncher.launchCoordinates( - model.qrParkingModel.latitude, - model.qrParkingModel.longitude, - ); - }, - disabled: model.qrParkingModel.longitude == 0, - label: TranslationBase.of(context).showMyPark, - textColor: Theme.of(context).backgroundColor), + child: DefaultButton( + TranslationBase.of(context).showMyPark, + () => { + MapsLauncher.launchCoordinates( + model.qrParkingModel.latitude, + model.qrParkingModel.longitude, + ), + }), ), SizedBox( height: 12, diff --git a/lib/pages/AlHabibMedicalService/​ health_calculators.dart b/lib/pages/AlHabibMedicalService/​ health_calculators.dart index fab4eb6d..6df44279 100644 --- a/lib/pages/AlHabibMedicalService/​ health_calculators.dart +++ b/lib/pages/AlHabibMedicalService/​ health_calculators.dart @@ -1,17 +1,17 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart'; -import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart'; -import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:provider/provider.dart'; + import 'health_calculator/bmi_calculator/bmi_calculator.dart'; import 'health_calculator/bmr_calculator/bmr_calculator.dart'; -import 'health_calculator/calorie_calculator/calorie_calculator.dart'; import 'health_calculator/delivery_due/delivery_due.dart'; import 'health_calculator/ideal_body/ideal_body.dart'; @@ -22,6 +22,7 @@ class HealthCalculators extends StatefulWidget { class _HealthCalculatorsState extends State with SingleTickerProviderStateMixin { TabController _tabController; + void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); @@ -34,249 +35,427 @@ class _HealthCalculatorsState extends State with SingleTicker @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + + List generalHealthList = getGeneralHealthList(context); + List womenHealthList = getWomenHealthList(context); + return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).calculators, - body: Scaffold( - extendBodyBehindAppBar: true, - appBar: PreferredSize( - preferredSize: Size.fromHeight(70.0), - child: Stack( - children: [ - Center( - child: Container( - height: 60.0, - margin: EdgeInsets.only(top: 10.0), - width: MediaQuery.of(context).size.width * 1.9, - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Theme.of(context).dividerColor, - width: 5.7, - ), - ), - color: Colors.white, - ), - child: Center( - child: TabBar( - controller: _tabController, - isScrollable: true, - indicatorWeight: 4.0, - indicatorColor: Colors.red, - labelColor: Theme.of(context).buttonColor, - labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), - unselectedLabelColor: Colors.grey, - tabs: [ - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context).generalHealth), - ), - ), - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context).womanHealth), - ), - ), - ], - ), - ), + body: Column( + children: [ + TabBar( + controller: _tabController, + isScrollable: true, + indicatorWeight: 4.0, + indicatorColor: Colors.red, + labelColor: Theme.of(context).buttonColor, + labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), + unselectedLabelColor: Colors.grey, + labelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + tabs: [ + Container( + width: MediaQuery.of(context).size.width * 0.35, + child: Center( + child: Text(TranslationBase.of(context).generalHealth), ), - ) + ), + Container( + width: MediaQuery.of(context).size.width * 0.35, + child: Center( + child: Text(TranslationBase.of(context).womanHealth), + ), + ), ], ), - ), - body: Column( - children: [ - Expanded( - child: TabBarView( - physics: BouncingScrollPhysics(), - controller: _tabController, - children: [ - Container( - child: Column( - children: [ - Container( - width: double.infinity, - height: 80, + Expanded( + child: TabBarView( + physics: NeverScrollableScrollPhysics(), + controller: _tabController, + children: [ + Container( + margin: EdgeInsets.all(20.0), + child: Column( + children: [ + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: generalHealthList.length, + itemBuilder: (BuildContext context, int index) { + return generalHealthList[index]; + }, ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: BMICalculator()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bmi, - imagePath: 'bmi_health_calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: CalorieCalculator(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).calories, - imagePath: 'calories-calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - ], - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BmrCalculator(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bmr, - imagePath: 'BMR_calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: IdealBody(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).idealBody, - imagePath: 'body_weight.png', - subTitle: TranslationBase.of(context).weight, - ), - ), - ), - ], - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BodyFat(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bodyWord, - imagePath: 'body_fat.png', - subTitle: TranslationBase.of(context).fat, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: Carbs(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).carbohydrate, - imagePath: 'carb_protein.png', - subTitle: TranslationBase.of(context).proteinFat, - ), - ), - ), - ], - ), - ], - ), + ), + ], ), - Container( - child: Column( - children: [ - Container( - width: double.infinity, - height: 80, - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: OvulationPeriod()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).ovulation, - imagePath: 'ovulation_period_icon.png', - subTitle: TranslationBase.of(context).period, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: DeliveryDue(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).delivery, - imagePath: 'delivery_date_icon.png', - subTitle: TranslationBase.of(context).dueDate, - ), - ), - ), - ], + ), + Container( + margin: EdgeInsets.all(20.0), + child: Column( + children: [ + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: womenHealthList.length, + itemBuilder: (BuildContext context, int index) { + return womenHealthList[index]; + }, ), - ], - ), + ), + ], ), - ], - ), - ) - ], - ), + ), + ], + ), + ), + ], ), + + // Scaffold( + // extendBodyBehindAppBar: true, + // appBar: PreferredSize( + // preferredSize: Size.fromHeight(70.0), + // child: Column( + // children: [ + // Center( + // child: Container( + // height: 60.0, + // margin: EdgeInsets.only(top: 10.0), + // width: MediaQuery.of(context).size.width * 1.9, + // decoration: BoxDecoration( + // border: Border( + // bottom: BorderSide( + // color: Theme.of(context).dividerColor, + // width: 5.7, + // ), + // ), + // color: Colors.white, + // ), + // child: Center( + // child: TabBar( + // controller: _tabController, + // isScrollable: true, + // indicatorWeight: 4.0, + // indicatorColor: Colors.red, + // labelColor: Theme.of(context).buttonColor, + // labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), + // unselectedLabelColor: Colors.grey, + // tabs: [ + // Container( + // width: MediaQuery.of(context).size.width * 0.35, + // child: Center( + // child: Texts(TranslationBase.of(context).generalHealth), + // ), + // ), + // Container( + // width: MediaQuery.of(context).size.width * 0.35, + // child: Center( + // child: Texts(TranslationBase.of(context).womanHealth), + // ), + // ), + // ], + // ), + // ), + // ), + // ) + // ], + // ), + // ), + // body: Column( + // children: [ + // Expanded( + // child: TabBarView( + // physics: BouncingScrollPhysics(), + // controller: _tabController, + // children: [ + // Container( + // child: Column( + // children: [ + // Container( + // width: double.infinity, + // height: 80, + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage(page: BMICalculator()), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bmi, + // imagePath: 'bmi_health_calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: CalorieCalculator(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).calories, + // imagePath: 'calories-calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // ], + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: BmrCalculator(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bmr, + // imagePath: 'BMR_calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: IdealBody(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).idealBody, + // imagePath: 'body_weight.png', + // subTitle: TranslationBase.of(context).weight, + // ), + // ), + // ), + // ], + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: BodyFat(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bodyWord, + // imagePath: 'body_fat.png', + // subTitle: TranslationBase.of(context).fat, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: Carbs(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).carbohydrate, + // imagePath: 'carb_protein.png', + // subTitle: TranslationBase.of(context).proteinFat, + // ), + // ), + // ), + // ], + // ), + // ], + // ), + // ), + // Container( + // child: Column( + // children: [ + // Padding( + // padding: EdgeInsets.only(left: 12, right: 12), + // child: GridView.builder( + // shrinkWrap: true, + // primary: false, + // physics: NeverScrollableScrollPhysics(), + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + // padding: EdgeInsets.zero, + // itemCount: womenHealthList.length, + // itemBuilder: (BuildContext context, int index) { + // return womenHealthList[index]; + // }, + // ), + // ), + // ], + // ), + // ), + // ], + // ), + // ) + // ], + // ), ); } + + List getGeneralHealthList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BMICalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bmi, + imagePath: 'assets/images/new-design/bmi_health_calculator.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: CalorieCalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).calories, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BmrCalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bmr, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: IdealBody()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).idealBody, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).weight, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BodyFat()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bodyWord, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).fat, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: Carbs()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).carbohydrate, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).proteinFat, + isPngImage: true, + ), + )); + + return medical; + } + + List getWomenHealthList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: OvulationPeriod()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).ovulation, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).period, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: DeliveryDue()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).delivery, + imagePath: 'assets/images/new-design/delivery_date_icon.png', + subTitle: TranslationBase.of(context).dueDate, + isPngImage: true, + ), + )); + + return medical; + } } diff --git a/lib/pages/Blood/blood_donation.dart b/lib/pages/Blood/blood_donation.dart index f362c2bc..63567eff 100644 --- a/lib/pages/Blood/blood_donation.dart +++ b/lib/pages/Blood/blood_donation.dart @@ -17,7 +17,7 @@ import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectCiteisD import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -83,6 +83,8 @@ class _BloodDonationPageState extends State { onModelReady: (model) => model.getCities(), //model.getHospitals(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, baseViewModel: model, imagesInfo: imagesInfo, description: TranslationBase.of(context).bloodDonationInfo, @@ -108,10 +110,10 @@ class _BloodDonationPageState extends State { padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [Texts(getHospitalName(projectProvider, context)), Icon(Icons.arrow_drop_down)], + children: [Texts(getHospitalName(projectProvider, context), color: Colors.black), Icon(Icons.arrow_drop_down)], ), ), ), @@ -121,17 +123,15 @@ class _BloodDonationPageState extends State { InkWell( //======Gender======== onTap: () => confirmSelectGenderDialog(), - //confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - //Texts(getBeneficiaryType()), - Texts(getGender(context)), + Texts(getGender(context), color: Colors.black), Icon(Icons.arrow_drop_down) ], ), @@ -143,19 +143,14 @@ class _BloodDonationPageState extends State { InkWell( //======Gender======== onTap: () => confirmSelectBloodDialog(), - //confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - //Texts(getBeneficiaryType()), - Texts(getBlood()), - Icon(Icons.arrow_drop_down) - ], + children: [Texts(getBlood(), color: Colors.black), Icon(Icons.arrow_drop_down)], ), ), ), @@ -163,12 +158,13 @@ class _BloodDonationPageState extends State { height: 12, ), Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( - child: Text(TranslationBase.of(context).viewTermsConditions), - ), - SizedBox( - width: MediaQuery.of(context).size.height * 0.10, + child: Text( + TranslationBase.of(context).viewTermsConditions + ":", + style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), + ), ), InkWell( onTap: () { @@ -178,6 +174,7 @@ class _BloodDonationPageState extends State { child: Texts( TranslationBase.of(context).clickHere, color: Colors.blue, + fontSize: 14.0, ), ), ) @@ -194,22 +191,12 @@ class _BloodDonationPageState extends State { checkedValue = value; }); }, - // tristate: checkedValue==true,//i == 1, value: checkedValue, - activeColor: Color(0xFFc5272d), //Color(0xFF6200EE), - ), - SizedBox( - height: 10, - ), - Row( - children: [], - ), - SizedBox( - width: 10, + activeColor: Color(0xFFc5272d), ), Text( TranslationBase.of(context).iAgreeToTheTermsAndConditions, - style: Theme.of(context).textTheme.subtitle1.copyWith(color: checkedValue ? Color(0xFFc5272d) : Colors.black), + style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), ), ], ), @@ -239,7 +226,7 @@ class _BloodDonationPageState extends State { onlyCancelButton: true, )); }, - child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png')), + child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png'), color: Colors.white), ), ), ), @@ -253,41 +240,27 @@ class _BloodDonationPageState extends State { ), ), bottomSheet: Container( - height: MediaQuery.of(context).size.height * 0.12, width: double.infinity, padding: EdgeInsets.all(12), - child: SecondaryButton( - textColor: Colors.white, - color: checkedValue == false - ? Color(0xFFa0a4a6) - : Color.fromRGBO( - 63, - 72, - 74, - 1, - ), - label: TranslationBase.of(context).save, - onTap: () async { - if (_selectedHospital == null) { - AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); - return; - } - bloodDetails.city = projectProvider.isArabic ? _selectedHospital.descriptionN : _selectedHospital.description; - bloodDetails.cityCode = _selectedHospital.iD.toString(); - bloodDetails.gender = gender == Gender.Male ? 1 : 2; - await model.updateBloodGroup(bloodDetails); - if (model.state == ViewState.Idle) { - AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); - } else { - AppToast.showErrorToast(message: model.error); - } - }, - ), + child: DefaultButton(TranslationBase.of(context).save, () async { + if (_selectedHospital == null) { + AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); + return; + } + bloodDetails.city = projectProvider.isArabic ? _selectedHospital.descriptionN : _selectedHospital.description; + bloodDetails.cityCode = _selectedHospital.iD.toString(); + bloodDetails.gender = gender == Gender.Male ? 1 : 2; + await model.updateBloodGroup(bloodDetails); + if (model.state == ViewState.Idle) { + AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); + } else { + AppToast.showErrorToast(message: model.error); + } + }), )), ); } - //============== void confirmSelectBeneficiaryDialog(MyBalanceViewModel model) { showDialog( context: context, diff --git a/lib/pages/Blood/user_agreement_page.dart b/lib/pages/Blood/user_agreement_page.dart index 36989ea5..319d868e 100644 --- a/lib/pages/Blood/user_agreement_page.dart +++ b/lib/pages/Blood/user_agreement_page.dart @@ -12,6 +12,8 @@ class UserAgreementPage extends StatelessWidget { onModelReady: (model) => model.getUserTermsAndConditions(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + showNewAppBarTitle: true, + showNewAppBar: true, appBarTitle: TranslationBase.of(context).userAgreement, body: SingleChildScrollView( child: Html( diff --git a/lib/pages/BookAppointment/QRCode.dart b/lib/pages/BookAppointment/QRCode.dart index 97cda171..3c3c1402 100644 --- a/lib/pages/BookAppointment/QRCode.dart +++ b/lib/pages/BookAppointment/QRCode.dart @@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/nfc/nfc_reader_sheet.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -43,7 +44,6 @@ class _QRCodeState extends State { widget.authUser = new AuthenticatedUser(); NFC.isNDEFSupported.then((supported) { setState(() { - print("nfc supprted"); _supportsNFC = true; }); }); @@ -56,6 +56,8 @@ class _QRCodeState extends State { return AppScaffold( appBarTitle: TranslationBase.of(context).attendRegisterCode, isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, body: SingleChildScrollView( child: Container( child: Column( @@ -146,7 +148,7 @@ class _QRCodeState extends State { child: Text(TranslationBase.of(context).appoInfo, style: TextStyle(fontSize: 18.0, color: Colors.grey[700], fontWeight: FontWeight.bold)), ), Container( - margin: EdgeInsets.only(left: 20.0, bottom: 20.0), + margin: EdgeInsets.only(left: 20.0, bottom: 20.0, right: 20.0), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.grey[200], @@ -161,10 +163,11 @@ class _QRCodeState extends State { margin: EdgeInsets.only(top: 15.0, bottom: 10.0, left: 20.0, right: 20.0), child: Text(widget.patientShareResponse.doctorNameObj, style: TextStyle(fontSize: 18.0, color: Colors.grey[700], fontWeight: FontWeight.bold)), ), - Container( - margin: EdgeInsets.only(bottom: 10.0, left: 20.0, right: 20.0), - child: Text(getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality), style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), - ), + if (getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality) != "null\n") + Container( + margin: EdgeInsets.only(bottom: 10.0, left: 20.0, right: 20.0), + child: Text(getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality), style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), + ), Container( margin: EdgeInsets.only(top: 0.0, bottom: 10.0, left: 20.0, right: 20.0), child: Text(widget.patientShareResponse.projectName, style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), @@ -177,57 +180,12 @@ class _QRCodeState extends State { ), ), Container( - margin: EdgeInsets.zero, + margin: EdgeInsets.only(left: 20.0, right: 20.0, top: 15.0), alignment: Alignment.bottomCenter, child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ - ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.width * 0.7, - height: 45.0, - child: RaisedButton( - color: new Color(0xFF60686b), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: new Color(0xFFbcc2c4), - onPressed: () { -// navigateToQR(context); -// getAppoQR(context); - sendEmail(); - }, - child: Text(TranslationBase.of(context).sendEmail.toUpperCase(), style: TextStyle(fontSize: 18.0)), - ), - ), - ], - ), - ), - Container( - alignment: Alignment.bottomCenter, - height: MediaQuery.of(context).size.height * 0.1, - margin: EdgeInsets.only(bottom: 20.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.width * 0.7, - height: 45.0, - child: RaisedButton( - color: new Color(0xFF60686b), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: new Color(0xFFbcc2c4), - onPressed: () { - navigateToHome(context); - }, - child: Text(TranslationBase.of(context).close.toUpperCase(), style: TextStyle(fontSize: 18.0)), - ), - ), + DefaultButton(TranslationBase.of(context).sendEmail.toUpperCase(), () => {sendEmail()}) ], ), ), diff --git a/lib/pages/BookAppointment/Search.dart b/lib/pages/BookAppointment/Search.dart index 497d5388..e44cb108 100644 --- a/lib/pages/BookAppointment/Search.dart +++ b/lib/pages/BookAppointment/Search.dart @@ -1,10 +1,12 @@ import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByClinic.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByDoctor.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'components/SearchByClinic.dart'; @@ -31,6 +33,7 @@ class _SearchState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { AppGlobal.context = context; + ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( isShowAppBar: false, isShowDecPage: false, @@ -46,11 +49,13 @@ class _SearchState extends State with TickerProviderStateMixin { unselectedLabelColor: Color(0xff575757), labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), labelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.48, ), unselectedLabelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.48, diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart index 4ab3f1ca..f909ce53 100644 --- a/lib/pages/BookAppointment/widgets/DoctorView.dart +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -53,11 +53,10 @@ class DoctorView extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (doctor.doctorTitle != null) - Text( - doctor.doctorTitle + " " + doctor.name, - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), - ), + Text( + doctor.name, + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), + ), if (doctor.doctorTitle != null) SizedBox(height: 6), Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index 749ff667..5519562d 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -26,6 +26,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/countdown_timer_controller.dart'; import 'package:flutter_countdown_timer/current_remaining_time.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; @@ -114,12 +115,13 @@ class _ToDoState extends State { children: [ Image.asset("assets/images/new-design/time_icon.png", width: 20.0, height: 20.0), Container( + width: MediaQuery.of(context).size.width * 0.4, margin: EdgeInsets.only(left: 10.0, right: 10.0), child: Text( DateUtil.getWeekDayMonthDayYearDateFormatted( DateUtil.convertStringToDate(widget.appoList[index].appointmentDate), projectViewModel.isArabic ? "ar" : "en") + " " + - widget.appoList[index].startTime.substring(0, 5), + widget.appoList[index].startTime.substring(0, 5), overflow: TextOverflow.clip, style: TextStyle(fontSize: 10.0)), ), !widget.appoList[index].isLiveCareAppointment ? Image.asset("assets/images/new-design/hospital_address_icon.png", width: 20.0, height: 20.0) : Container(), @@ -161,11 +163,12 @@ class _ToDoState extends State { children: [ Text(widget.appoList[index].doctorTitle + " " + widget.appoList[index].doctorNameObj, style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.bold, letterSpacing: 1.0)), - Container( - margin: EdgeInsets.only(top: 3.0, bottom: 3.0), - child: Text(getDoctorSpeciality(widget.appoList[index].doctorSpeciality).trim(), - style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), - ), + if (getDoctorSpeciality(widget.appoList[index].doctorSpeciality) != "null\n") + Container( + margin: EdgeInsets.only(top: 3.0, bottom: 3.0), + child: Text(getDoctorSpeciality(widget.appoList[index].doctorSpeciality).trim(), + style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), + ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisSize: MainAxisSize.max, @@ -189,7 +192,7 @@ class _ToDoState extends State { widgetBuilder: (_, CurrentRemainingTime time) { return time != null ? Text( - '${time.days != null ? time.days : "0"}:${time.hours.toString().length == 1 ? "0" + time.hours.toString() : time.hours}:${time.min}:${time.sec} ' + + '${time.days != null ? time.days : "0"}:${time.hours != null ? time.hours.toString().length == 1 ? "0" + time.hours.toString() : time.hours : "00"}:${time.min}:${time.sec} ' + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12.0, color: Color(0xff40ACC9))) : Container(); @@ -229,7 +232,7 @@ class _ToDoState extends State { Expanded( flex: 2, child: Container( - child: Text(getNextActionDescription(widget.appoList[index].nextAction), style: TextStyle(fontSize: 12.0, color: Colors.grey[700])), + child: Text(getNextActionDescription(widget.appoList[index].nextAction), style: TextStyle(fontSize: 11.0, color: Colors.grey[700])), ), ), Expanded( @@ -240,7 +243,7 @@ class _ToDoState extends State { }, child: Container( child: Text(TranslationBase.of(context).upcomingDetails, - textAlign: TextAlign.end, style: TextStyle(fontSize: 12.0, color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), + textAlign: TextAlign.end, style: TextStyle(fontSize: 11.0, color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), ), ) @@ -264,10 +267,23 @@ class _ToDoState extends State { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, children: [ - widget.appoList[index].isLiveCareAppointment ? Image.asset("assets/images/new-design/video.png") : Image.asset("assets/images/new-design/walkin.png"), - widget.appoList[index].isLiveCareAppointment - ? Text(TranslationBase.of(context).videoAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) - : Text(TranslationBase.of(context).walkinAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + widget.appoList[index].clinicID == 265 + ? Container( + margin: EdgeInsets.only(left: 5.0, right: 5.0), + child: SvgPicture.asset( + "assets/images/new/car_icon.svg", + height: 15, + width: 15, + ), + ) + : widget.appoList[index].isLiveCareAppointment + ? Image.asset("assets/images/new-design/video.png") + : Image.asset("assets/images/new-design/walkin.png"), + widget.appoList[index].clinicID == 265 + ? Text(TranslationBase.of(context).drivethruAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + : widget.appoList[index].isLiveCareAppointment + ? Text(TranslationBase.of(context).videoAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + : Text(TranslationBase.of(context).walkinAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) ], ), ), @@ -304,7 +320,7 @@ class _ToDoState extends State { break; case 30: - return "assets/images/new-design/qr_code_button.png"; + return "assets/images/new-design/NFCIcon_option2.png"; break; case 40: @@ -320,7 +336,7 @@ class _ToDoState extends State { break; case 90: - return "assets/images/new-design/check-in.png"; + return "assets/images/new-design/NFCIcon_option2.png"; break; default: @@ -410,7 +426,11 @@ class _ToDoState extends State { break; case 30: - return TranslationBase.of(context).upcomingQR; + return TranslationBase.of(context).upcomingQRNFC; + break; + + case 90: + return TranslationBase.of(context).upcomingQRNFC; break; case 40: @@ -549,7 +569,6 @@ class _ToDoState extends State { DoctorsListService service = new DoctorsListService(); service.generateAppointmentQR(patientShareResponse, context).then((res) { GifLoaderDialogUtils.hideDialog(context); - print(res); navigateToQR(context, res['AppointmentQR'], patientShareResponse); }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index 89856974..00efc157 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -11,7 +11,6 @@ import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel. import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; -import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; @@ -22,9 +21,7 @@ import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart' import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart' as family; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; -import 'package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart'; import 'package:diplomaticquarterapp/uitl/LocalNotification.dart'; -import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart'; @@ -33,6 +30,7 @@ import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.da import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/not_auh_page.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/cupertino.dart'; @@ -41,7 +39,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; + import '../../locator.dart'; import '../../routes.dart'; @@ -252,10 +250,10 @@ class _LandingPageState extends State with WidgetsBindingObserver { _firebaseMessaging.getToken().then((String token) { print("Firebase Token: " + token); sharedPref.setString(PUSH_TOKEN, token); - if (token != null && DEVICE_TOKEN == "") { + if (token != null) { DEVICE_TOKEN = token; checkUserStatus(token); - if (projectViewModel.isLogin) this.getNotificationCount(DEVICE_TOKEN); + // if (projectViewModel.isLogin) this.getNotificationCount(DEVICE_TOKEN); } }); if (results[Permission.location].isGranted) {} @@ -491,16 +489,12 @@ class _LandingPageState extends State with WidgetsBindingObserver { if (await sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); if (data != null) { - // authService - // .registeredAuthenticatedUser(data, token, 0, 0) - // .then((res) => {print(res)}); authService.getDashboard().then((value) => { if (value != null) { setState(() { notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); - sharedPref.setString(NOTIFICATION_COUNT, notificationCount); }) } @@ -665,18 +659,19 @@ class _LandingPageState extends State with WidgetsBindingObserver { void checkUserStatus(token) async { authService.selectDeviceImei(token).then((SelectDeviceIMEIRES value) => setUserValues(value)); - if (projectViewModel.isLoading == true) { + if (authenticatedUserObject.isLogin) { var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); if (data != null) { authService.registeredAuthenticatedUser(data, token, 0, 0).then((res) => {}); authService.getDashboard().then((value) => { setState(() { if (value != null) { - notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + sharedPref.setString(NOTIFICATION_COUNT, notificationCount); } - }) + }), }); } - } + } else {} } } diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index a4f9f0b0..bfb5a85a 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -572,6 +572,7 @@ class _ConfirmLogin extends State { authService.insertDeviceImei(selectedOption).then((value) => {goToHome()}).catchError((err) { print(err); }); + // authService.registeredAuthenticatedUser(data, token, 0, 0).then((res) => {}); } getToDoCount() { diff --git a/lib/pages/medical/my_invoices/invoice_detail_page.dart b/lib/pages/medical/my_invoices/invoice_detail_page.dart index 618c5676..23f3ba6a 100644 --- a/lib/pages/medical/my_invoices/invoice_detail_page.dart +++ b/lib/pages/medical/my_invoices/invoice_detail_page.dart @@ -54,10 +54,10 @@ class InvoiceDetail extends StatelessWidget { child: Table( children: [ TableRow(children: [ - Text("Description", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Quantity", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Price", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Total", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).description, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).quantity, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).price, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).total, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), ]), ], ), @@ -82,7 +82,7 @@ class InvoiceDetail extends StatelessWidget { ), Container( child: AppExpandableNotifier( - title: "Total Price: " + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].grandTotal.toString() + " SAR", + title: TranslationBase.of(context).patientShareTotal.toString() + " " + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].grandTotal.toString() + " SAR", isExpand: true, bodyWidget: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Table( @@ -90,45 +90,45 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Discount: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).discount, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].discountAmount.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].discountAmount.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("VAT (" + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].vATPercentage.toString() + "%)", + child: Text(TranslationBase.of(context).totalVAT.toString() + " (" + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].vATPercentage.toString() + "%): ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].patientVATAmount.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].patientVATAmount.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Total: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).total.toString() + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Paid: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).paid.toString() + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), @@ -152,7 +152,7 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Insurance: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).dentalInsurance + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 5.0), @@ -162,7 +162,7 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Insurance ID: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).insuranceID + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 10.0), @@ -221,11 +221,11 @@ class InvoiceDetail extends StatelessWidget { ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(lab.price.toString() + " SAR", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), + child: Text(lab.price.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(lab.total.toString() + " SAR", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), + child: Text(lab.total.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), ), ]), ); diff --git a/lib/pages/medical/my_invoices/my_invoice_page.dart b/lib/pages/medical/my_invoices/my_invoice_page.dart index c634a587..db4436b7 100644 --- a/lib/pages/medical/my_invoices/my_invoice_page.dart +++ b/lib/pages/medical/my_invoices/my_invoice_page.dart @@ -96,7 +96,7 @@ class _MyInvoicesState extends State { children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Appointment No: ", + child: Text(TranslationBase.of(context).appointmentNo + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -104,7 +104,7 @@ class _MyInvoicesState extends State { ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Appointment Date: ", + child: Text(TranslationBase.of(context).appointmentDate + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -113,7 +113,7 @@ class _MyInvoicesState extends State { Container( margin: EdgeInsets.only( top: 10.0, bottom: 10.0), - child: Text("Clinic: ", + child: Text(TranslationBase.of(context).clinic + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -203,14 +203,13 @@ class _MyInvoicesState extends State { DoctorListResponse.DoctorList doctor = new DoctorListResponse.DoctorList(); - doctor.name = listDentalAppointments.doctorName; + doctor.name = projectViewModel.isArabic ? listDentalAppointments.doctorNameN : listDentalAppointments.doctorName; doctor.projectName = listDentalAppointments.projectName; doctor.date = listDentalAppointments.appointmentDate; doctor.actualDoctorRate = 0; doctor.doctorImageURL = listDentalAppointments.doctorImageURL; doctor.projectID = listDentalAppointments.projectID; doctor.dayName = listDentalAppointments.invoiceNo; - doctor.doctorTitle = "Dr."; doctor.clinicName = "InvoiceNo: " + listDentalAppointments.invoiceNo.toString(); myInvoicesService.getDentalAppointmentInvoice(listDentalAppointments.projectID, listDentalAppointments.appointmentNo, context).then((res) { diff --git a/lib/services/pharmacy_services/product_detail_service.dart b/lib/services/pharmacy_services/product_detail_service.dart index f85faf2c..e219adaa 100644 --- a/lib/services/pharmacy_services/product_detail_service.dart +++ b/lib/services/pharmacy_services/product_detail_service.dart @@ -138,7 +138,7 @@ class ProductDetailService extends BaseService { Future getWishlistItems() async { var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); hasError = false; - await baseAppClient.getPharmacy(GET_WISHLIST+customerId+"?shopping_cart_type=2", + await baseAppClient.getPharmacy(GET_WISHLIST.toString()+customerId.toString()+"?shopping_cart_type=2", onSuccess: (dynamic response, int statusCode) { _wishListProducts.clear(); response['shopping_carts'].forEach((item) { diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 474b13cd..512a8be1 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -2203,6 +2203,18 @@ class TranslationBase { String get offlineClinics => localizedValues["offline-clinics"][locale.languageCode]; String get clinicSchedule => localizedValues["clinic-schedule"][locale.languageCode]; + + String get discount => localizedValues["discount"][locale.languageCode]; + + String get totalVAT => localizedValues["total-VAT"][locale.languageCode]; + + String get paid => localizedValues["paid"][locale.languageCode]; + + String get dentalInsurance => localizedValues["dental-insurance"][locale.languageCode]; + + String get drivethruAppo => localizedValues["drivethru-appo"][locale.languageCode]; + + String get upcomingQRNFC => localizedValues["upcoming-QR-NFC"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 6fa0a4ec..f5e633ec 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -163,7 +163,7 @@ class _AppDrawerState extends State { } else { projectProvider.changeLanguage('ar'); } - var themeNotifier = Provider.of(context, listen: true); + var themeNotifier = Provider.of(context, listen: false); themeNotifier.setTheme(defaultTheme(fontName: projectProvider.isArabic ? 'Cairo' : 'Poppins')); }, ),