// import 'package:hmg_patient_app/core/enum/viewstate.dart'; // import 'package:hmg_patient_app/core/model/ImagesInfo.dart'; // import 'package:hmg_patient_app/core/model/blooddonation/blood_groub_details.dart'; // import 'package:hmg_patient_app/core/model/blooddonation/get_all_cities.dart'; // import 'package:hmg_patient_app/core/viewModels/medical/my_balance_view_model.dart'; // import 'package:hmg_patient_app/core/viewModels/project_view_model.dart'; // import 'package:hmg_patient_app/pages/AlHabibMedicalService/h2o/h20_setting.dart'; // import 'package:hmg_patient_app/pages/Blood/user_agreement_page.dart'; // import 'package:hmg_patient_app/pages/base/base_view.dart'; // import 'package:hmg_patient_app/theme/colors.dart'; // import 'package:hmg_patient_app/uitl/app_shared_preferences.dart'; // import 'package:hmg_patient_app/uitl/app_toast.dart'; // import 'package:hmg_patient_app/uitl/translations_delegate_base.dart'; // import 'package:hmg_patient_app/widgets/buttons/defaultButton.dart'; // import 'package:hmg_patient_app/widgets/dialogs/radio_selection_dialog.dart'; // import 'package:hmg_patient_app/widgets/others/app_scaffold_widget.dart'; // import 'package:hmg_patient_app/widgets/show_zoom_image_dialog.dart'; // import 'package:hmg_patient_app/widgets/transitions/fade_page.dart'; // import 'package:flutter/cupertino.dart'; // import 'package:flutter/material.dart'; // import 'package:provider/provider.dart'; // // enum BeneficiaryType { MyAccount, MyFamilyFiles, OtherAccount, NON } // enum Gender { Male, Female, NON } // enum Blood { Oplus, Ominus, Aplus, Aminus, Bplus, Bminus, ABplus, ABminus, NON } // // class BloodDonationPage extends StatefulWidget { // @override // _BloodDonationPageState createState() => _BloodDonationPageState(); // } // // class _BloodDonationPageState extends State { // BeneficiaryType beneficiaryType = BeneficiaryType.NON; // // CitiesModel _selectedHospital; // // int _selectedHospitalIndex = 0; // int _selectedGenderIndex = 1; // int _selectedBloodTypeIndex = 0; // String _selectedBloodType = "O+"; // // String amount = ""; // String email; // // List_BloodGroupDetailsModel bloodDetails = List_BloodGroupDetailsModel(bloodGroup: "A-"); // AppSharedPreferences sharedPref = AppSharedPreferences(); // var checkedValue = false; // List imagesInfo = List(); // // ProjectViewModel projectProvider; // // @override // void initState() { // imagesInfo.add( // ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/blood/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/blood/ar/0.png'), // ); // WidgetsBinding.instance.addPostFrameCallback((_) {}); // super.initState(); // } // // int getSelectedCityID(MyBalanceViewModel model) { // int cityID = 1; // model.CitiesModelList.forEach((element) { // if (element.description == model.bloodModelList[0].city) { // cityID = element.iD; // } // }); // return cityID; // } // // @override // Widget build(BuildContext context) { // projectProvider = Provider.of(context); // // return BaseView( // onModelReady: (model) => model.getCities().then((value) { // model.getBlood().then((value) { // if (model.bloodModelList.length > 0) { // CitiesModel citiesModel = new CitiesModel(); // citiesModel.iD = getSelectedCityID(model); // _selectedHospitalIndex = (citiesModel.iD - 1); // citiesModel.description = model.CitiesModelList[_selectedHospitalIndex].description; // citiesModel.descriptionN = model.CitiesModelList[_selectedHospitalIndex].descriptionN; // _selectedHospital = citiesModel; // _selectedBloodType = model.bloodModelList[0].bloodGroup; // _selectedBloodTypeIndex = getBloodIndex(_selectedBloodType); // } else { // _selectedHospital = model.CitiesModelList[0]; // } // }); // }), // // { // // if (projectProvider.isLogin && projectProvider.user != null) { // // model.getCities().then((value) { // // model.getBlood().then((value) { // // if (model.bloodModelList.length > 0) { // // CitiesModel citiesModel = new CitiesModel(); // // citiesModel.iD = getSelectedCityID(model); // // _selectedHospitalIndex = (citiesModel.iD - 1); // // citiesModel.description = model.CitiesModelList[_selectedHospitalIndex].description; // // citiesModel.descriptionN = model.CitiesModelList[_selectedHospitalIndex].descriptionN; // // _selectedHospital = citiesModel; // // _selectedBloodType = model.bloodModelList[0].bloodGroup; // // _selectedBloodTypeIndex = getBloodIndex(_selectedBloodType); // // } else { // // _selectedHospital = model.CitiesModelList[0]; // // } // // }); // // }); // // } // // }, // builder: (_, model, w) => AppScaffold( // isShowAppBar: true, // showNewAppBar: true, // backgroundColor: Color(0xffF7F7F7), // showNewAppBarTitle: true, // baseViewModel: model, // isShowDecPage: true, // imagesInfo: imagesInfo, // description: TranslationBase.of(context).bloodDonationInfo, // appBarTitle: TranslationBase.of(context).bloodD, // body: Column( // children: [ // Expanded( // child: SingleChildScrollView( // physics: BouncingScrollPhysics(), // padding: EdgeInsets.all(21), // child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // Text( // TranslationBase.of(context).bloodDEnterDesc, // style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64), // ), // SizedBox(height: 12), // if (projectProvider.isLogin && model.state != ViewState.Busy) // // CommonDropDownView( // TranslationBase.of(context).city, // model.CitiesModelList.isNotEmpty // ? projectProvider.isArabic // ? model.CitiesModelList[_selectedHospitalIndex].descriptionN // : model.CitiesModelList[_selectedHospitalIndex].description // : "", () { // List list = [ // for (int i = 0; i < model.CitiesModelList.length; i++) // RadioSelectionDialogModel(projectProvider.isArabic ? model.CitiesModelList[i].descriptionN : model.CitiesModelList[i].description, i), // ]; // // showDialog( // context: context, // builder: (cxt) => RadioSelectionDialog( // listData: list, // selectedIndex: _selectedHospitalIndex, // isScrollable: true, // onValueSelected: (index) { // _selectedHospitalIndex = index; // _selectedHospital = model.CitiesModelList[index]; // setState(() {}); // }, // ), // ); // }).withBorderedContainer, // SizedBox(height: 12), // CommonDropDownView(TranslationBase.of(context).gender, _selectedGenderIndex == 1 ? TranslationBase.of(context).male : TranslationBase.of(context).female, () { // List list = [ // RadioSelectionDialogModel(TranslationBase.of(context).male, 1), // RadioSelectionDialogModel(TranslationBase.of(context).female, 2), // ]; // // showDialog( // context: context, // builder: (cxt) => RadioSelectionDialog( // listData: list, // selectedIndex: _selectedGenderIndex, // onValueSelected: (index) { // _selectedGenderIndex = index; // setState(() {}); // }, // ), // ); // }).withBorderedContainer, // SizedBox(height: 12), // CommonDropDownView(TranslationBase.of(context).bloodType, _selectedBloodType, () { // List list = [ // RadioSelectionDialogModel("O+", 0), // RadioSelectionDialogModel("O-", 1), // RadioSelectionDialogModel("AB+", 2), // RadioSelectionDialogModel("AB-", 3), // RadioSelectionDialogModel("A+", 4), // RadioSelectionDialogModel("A-", 5), // RadioSelectionDialogModel("B+", 6), // RadioSelectionDialogModel("B-", 7), // ]; // // showDialog( // context: context, // builder: (cxt) => RadioSelectionDialog( // listData: list, // selectedIndex: _selectedBloodTypeIndex, // isScrollable: true, // onValueSelected: (index) { // _selectedBloodTypeIndex = index; // _selectedBloodType = getBlood(index); // setState(() {}); // }, // ), // ); // }).withBorderedContainer, // SizedBox(height: 12), // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Text( // TranslationBase.of(context).viewTermsConditions + ":", // style: TextStyle(fontWeight: FontWeight.w600, color: Color(0xff2E303A), fontSize: 14, letterSpacing: -0.56), // ), // InkWell( // onTap: () { // Navigator.of(context).push(FadePage(page: UserAgreementPage())); // }, // child: Text( // TranslationBase.of(context).clickHere, // style: TextStyle(fontWeight: FontWeight.w600, color: Colors.blue, fontSize: 14, letterSpacing: -0.56), // ), // ) // ], // ), // SizedBox(height: 12), // Row( // children: [ // Checkbox( // onChanged: (bool value) { // setState(() { // checkedValue = value; // }); // }, // value: checkedValue, // activeColor: Color(0xFFc5272d), // ), // Text( // TranslationBase.of(context).iAgreeToTheTermsAndConditions, // style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), // ), // ], // ), // SizedBox( // height: 10, // ), // Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // Center( // child: Container( // color: Theme.of(context).primaryColor, // width: 350, // child: InkWell( // onTap: () { // showZoomImageDialog(context, 'assets/images/BloodChrt_EN.png', isNetworkImage: false); // }, // child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png'), color: Colors.white), // ), // ), // ), // ], // ), // SizedBox( // height: MediaQuery.of(context).size.height * 0.15, // ) // ], // ), // ), // ), // DefaultButton( // TranslationBase.of(context).save, // checkedValue // ? () async { // if (_selectedHospital == null) { // AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); // return; // } // bloodDetails.city = _selectedHospital.description; // bloodDetails.cityCode = _selectedHospital.iD.toString(); // bloodDetails.gender = _selectedGenderIndex; // bloodDetails.bloodGroup = getBlood(_selectedBloodTypeIndex); // await model.updateBloodGroup(bloodDetails); // if (model.state == ViewState.Idle) { // AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); // } else { // AppToast.showErrorToast(message: model.error); // } // } // : null, // disabledColor: CustomColors.grey2, // ).insideContainer // ], // ), // ), // ); // } // // String getBlood(int index) { // switch (index) { // case 0: // return "O+"; // break; // case 1: // return "O-"; // break; // case 2: // return "AB+"; // break; // case 3: // return "AB-"; // break; // case 4: // return "A+"; // break; // case 5: // return "A-"; // break; // case 6: // return "B-"; // break; // case 7: // return "B-"; // break; // case 8: // return "B+"; // break; // // default: // return ""; // } // } // // int getBloodIndex(String type) { // switch (type) { // case "O+": // return 0; // break; // case "O-": // return 1; // break; // case "AB+": // return 2; // break; // case "AB-": // return 3; // break; // case "A+": // return 4; // break; // case "A-": // return 5; // break; // case "B-": // return 6; // break; // case "B-": // return 7; // break; // case "B+": // return 8; // break; // // default: // return 0; // } // } // // String getHospitalName(ProjectViewModel projectProvider, BuildContext context) { // if (_selectedHospital != null) // return projectProvider.isArabic ? _selectedHospital.descriptionN : _selectedHospital.description; // else // return TranslationBase.of(context).selectCity; // } // } import 'package:hmg_patient_app/core/enum/viewstate.dart'; import 'package:hmg_patient_app/core/model/ImagesInfo.dart'; import 'package:hmg_patient_app/core/model/blooddonation/blood_groub_details.dart'; import 'package:hmg_patient_app/core/model/blooddonation/get_all_cities.dart'; import 'package:hmg_patient_app/core/viewModels/medical/my_balance_view_model.dart'; import 'package:hmg_patient_app/core/viewModels/project_view_model.dart'; import 'package:hmg_patient_app/pages/AlHabibMedicalService/h2o/h20_setting.dart'; import 'package:hmg_patient_app/pages/Blood/blood_donation_book_appointment.dart'; import 'package:hmg_patient_app/pages/Blood/user_agreement_page.dart'; import 'package:hmg_patient_app/pages/base/base_view.dart'; import 'package:hmg_patient_app/theme/colors.dart'; import 'package:hmg_patient_app/uitl/app_shared_preferences.dart'; import 'package:hmg_patient_app/uitl/app_toast.dart'; import 'package:hmg_patient_app/uitl/translations_delegate_base.dart'; import 'package:hmg_patient_app/uitl/utils_new.dart'; import 'package:hmg_patient_app/widgets/buttons/custom_text_button.dart'; import 'package:hmg_patient_app/widgets/buttons/defaultButton.dart'; import 'package:hmg_patient_app/widgets/dialogs/radio_selection_dialog.dart'; import 'package:hmg_patient_app/widgets/others/app_scaffold_widget.dart'; import 'package:hmg_patient_app/widgets/show_zoom_image_dialog.dart'; import 'package:hmg_patient_app/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; enum BeneficiaryType { MyAccount, MyFamilyFiles, OtherAccount, NON } enum Gender { Male, Female, NON } enum Blood { Oplus, Ominus, Aplus, Aminus, Bplus, Bminus, ABplus, ABminus, NON } class BloodDonationPage extends StatefulWidget { @override _BloodDonationPageState createState() => _BloodDonationPageState(); } class _BloodDonationPageState extends State { BeneficiaryType beneficiaryType = BeneficiaryType.NON; late CitiesModel _selectedHospital; int _selectedHospitalIndex = 0; int _selectedGenderIndex = 1; int _selectedBloodTypeIndex = 0; String _selectedBloodType = "O+"; String amount = ""; String? email; List_BloodGroupDetailsModel bloodDetails = List_BloodGroupDetailsModel(bloodGroup: "A-"); AppSharedPreferences sharedPref = AppSharedPreferences(); var checkedValue = false; List imagesInfo = []; late ProjectViewModel projectProvider; @override void initState() { imagesInfo.add( ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/blood/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/blood/ar/0.png'), ); WidgetsBinding.instance.addPostFrameCallback((_) {}); super.initState(); } int getSelectedCityID(MyBalanceViewModel model) { int cityID = 1; model.CitiesModelList.forEach((element) { if (element.description == model.bloodModelList[0].city) { cityID = element.iD!; } }); return cityID; } @override Widget build(BuildContext context) { projectProvider = Provider.of(context); return BaseView( onModelReady: (model) => model.getCities().then((value) { model.getBlood().then((value) { if (model.bloodModelList.length > 0) { CitiesModel citiesModel = new CitiesModel(); citiesModel.iD = getSelectedCityID(model); _selectedHospitalIndex = (citiesModel.iD! - 1); citiesModel.description = model.CitiesModelList[_selectedHospitalIndex].description; citiesModel.descriptionN = model.CitiesModelList[_selectedHospitalIndex].descriptionN; _selectedHospital = citiesModel; _selectedBloodType = model.bloodModelList[0].bloodGroup!; _selectedBloodTypeIndex = getBloodIndex(_selectedBloodType); } else { _selectedHospital = model.CitiesModelList[0]; } }); }), // { // if (projectProvider.isLogin && projectProvider.user != null) { // model.getCities().then((value) { // model.getBlood().then((value) { // if (model.bloodModelList.length > 0) { // CitiesModel citiesModel = new CitiesModel(); // citiesModel.iD = getSelectedCityID(model); // _selectedHospitalIndex = (citiesModel.iD - 1); // citiesModel.description = model.CitiesModelList[_selectedHospitalIndex].description; // citiesModel.descriptionN = model.CitiesModelList[_selectedHospitalIndex].descriptionN; // _selectedHospital = citiesModel; // _selectedBloodType = model.bloodModelList[0].bloodGroup; // _selectedBloodTypeIndex = getBloodIndex(_selectedBloodType); // } else { // _selectedHospital = model.CitiesModelList[0]; // } // }); // }); // } // }, builder: (_, model, w) => AppScaffold( isShowAppBar: true, showNewAppBar: true, backgroundColor: Color(0xffF7F7F7), showNewAppBarTitle: true, baseViewModel: model, isShowDecPage: true, imagesInfo: imagesInfo, description: TranslationBase.of(context).bloodDonationInfo, appBarTitle: TranslationBase.of(context).bloodD, body: Column( children: [ Expanded( child: SingleChildScrollView( physics: BouncingScrollPhysics(), padding: EdgeInsets.all(21), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( TranslationBase.of(context).bloodDEnterDesc, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64), ), SizedBox(height: 12), if (projectProvider.isLogin && model.state != ViewState.Busy) CommonDropDownView( TranslationBase.of(context).city, model.CitiesModelList!.isNotEmpty ? projectProvider.isArabic! ? model.CitiesModelList[_selectedHospitalIndex].descriptionN! : model.CitiesModelList[_selectedHospitalIndex].description! : "", () { List list = [ for (int i = 0; i < model.CitiesModelList.length; i++) RadioSelectionDialogModel(projectProvider.isArabic! ? model.CitiesModelList[i].descriptionN! : model.CitiesModelList[i].description!, i), ]; showDialog( context: context, builder: (cxt) => RadioSelectionDialog( listData: list, selectedIndex: _selectedHospitalIndex, isScrollable: true, onValueSelected: (index) { _selectedHospitalIndex = index; _selectedHospital = model.CitiesModelList[index]; setState(() {}); }, ), ); }).withBorderedContainer, SizedBox(height: 12), CommonDropDownView(TranslationBase.of(context).gender, _selectedGenderIndex == 1 ? TranslationBase.of(context).male : TranslationBase.of(context).female, () { List list = [ RadioSelectionDialogModel(TranslationBase.of(context).male, 1), RadioSelectionDialogModel(TranslationBase.of(context).female, 2), ]; showDialog( context: context, builder: (cxt) => RadioSelectionDialog( listData: list, selectedIndex: _selectedGenderIndex, onValueSelected: (index) { _selectedGenderIndex = index; setState(() {}); }, ), ); }).withBorderedContainer, SizedBox(height: 12), CommonDropDownView(TranslationBase.of(context).bloodType, _selectedBloodType, () { List list = [ RadioSelectionDialogModel("O+", 0), RadioSelectionDialogModel("O-", 1), RadioSelectionDialogModel("AB+", 2), RadioSelectionDialogModel("AB-", 3), RadioSelectionDialogModel("A+", 4), RadioSelectionDialogModel("A-", 5), RadioSelectionDialogModel("B+", 6), RadioSelectionDialogModel("B-", 7), ]; showDialog( context: context, builder: (cxt) => RadioSelectionDialog( listData: list, selectedIndex: _selectedBloodTypeIndex, isScrollable: true, onValueSelected: (index) { _selectedBloodTypeIndex = index; _selectedBloodType = getBlood(index); setState(() {}); }, ), ); }).withBorderedContainer, SizedBox(height: 12), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( TranslationBase.of(context).viewTermsConditions + ":", style: TextStyle(fontWeight: FontWeight.w600, color: Color(0xff2E303A), fontSize: 14, letterSpacing: -0.56), ), InkWell( onTap: () { Navigator.of(context).push(FadePage(page: UserAgreementPage())); }, child: Text( TranslationBase.of(context).clickHere, style: TextStyle(fontWeight: FontWeight.w600, color: Colors.blue, fontSize: 14, letterSpacing: -0.56), ), ) ], ), SizedBox(height: 12), Row( children: [ Checkbox( onChanged: (bool? value) { setState(() { checkedValue = value!; }); }, value: checkedValue, activeColor: Color(0xFFc5272d), ), Text( TranslationBase.of(context).iAgreeToTheTermsAndConditions, style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), ), ], ), SizedBox( height: 10, ), Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Center( child: Container( color: Theme.of(context).primaryColor, width: 350, child: InkWell( onTap: () { showZoomImageDialog(context, 'assets/images/BloodChrt_EN.png', isNetworkImage: false); }, child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png'), color: Colors.white), ), ), ), ], ), SizedBox( height: MediaQuery.of(context).size.height * 0.15, ) ], ), ), ), Container( color: CustomColors.appBackgroudGreyColor, margin: EdgeInsets.all(14), height: 45.0, child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Expanded( flex: 1, child: ButtonTheme( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0), ), height: 45.0, child: CustomTextButton( backgroundColor: CustomColors.green, elevation: 0, onPressed: () { Navigator.push(context, FadePage(page: BloodDonationBookAppointment())); }, child: Text(TranslationBase.of(context).bookAppo.toUpperCase(), style: TextStyle( fontSize: 16.0, color: Colors.white, )), ), ), ), mWidth(7), Expanded( flex: 1, child: ButtonTheme( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0), ), height: 45.0, child: CustomTextButton( backgroundColor: Color(0xffc5272d), elevation: 0, onPressed: () async { if (_selectedHospital == null) { AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); return; } bloodDetails.city = _selectedHospital.description; bloodDetails.cityCode = _selectedHospital.iD.toString(); bloodDetails.gender = _selectedGenderIndex; bloodDetails.bloodGroup = getBlood(_selectedBloodTypeIndex); await model.updateBloodGroup(bloodDetails); if (model.state == ViewState.Idle) { AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); } else { AppToast.showErrorToast(message: model.error); } }, child: Text(TranslationBase.of(context).save.toUpperCase(), style: TextStyle(fontSize: 16.0, color: Colors.white)), ), ), ), ], ), ), // DefaultButton( // TranslationBase.of(context).save, // checkedValue // ? () async { // if (_selectedHospital == null) { // AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); // return; // } // bloodDetails.city = _selectedHospital.description; // bloodDetails.cityCode = _selectedHospital.iD.toString(); // bloodDetails.gender = _selectedGenderIndex; // bloodDetails.bloodGroup = getBlood(_selectedBloodTypeIndex); // await model.updateBloodGroup(bloodDetails); // if (model.state == ViewState.Idle) { // AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); // } else { // AppToast.showErrorToast(message: model.error); // } // } // : null, // disabledColor: CustomColors.grey2, // ).insideContainer ], ), ), ); } String getBlood(int index) { switch (index) { case 0: return "O+"; break; case 1: return "O-"; break; case 2: return "AB+"; break; case 3: return "AB-"; break; case 4: return "A+"; break; case 5: return "A-"; break; case 6: return "B-"; break; case 7: return "B-"; break; case 8: return "B+"; break; default: return ""; } } int getBloodIndex(String type) { switch (type) { case "O+": return 0; break; case "O-": return 1; break; case "AB+": return 2; break; case "AB-": return 3; break; case "A+": return 4; break; case "A-": return 5; break; case "B-": return 6; break; case "B-": return 7; break; case "B+": return 8; break; default: return 0; } } String getHospitalName(ProjectViewModel projectProvider, BuildContext context) { if (_selectedHospital != null) return projectProvider.isArabic ? _selectedHospital.descriptionN! : _selectedHospital.description!; else return TranslationBase.of(context).selectCity; } }