register step 2 & fixes
							parent
							
								
									ed24365eff
								
							
						
					
					
						commit
						7321da67e3
					
				
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								| @ -0,0 +1,29 @@ | ||||
| import 'dart:convert'; | ||||
| 
 | ||||
| class NationalityCountries { | ||||
|   String? id; | ||||
|   String? name; | ||||
|   String? nameN; | ||||
| 
 | ||||
|   NationalityCountries({ | ||||
|     this.id, | ||||
|     this.name, | ||||
|     this.nameN, | ||||
|   }); | ||||
| 
 | ||||
|   factory NationalityCountries.fromRawJson(String str) => NationalityCountries.fromJson(json.decode(str)); | ||||
| 
 | ||||
|   String toRawJson() => json.encode(toJson()); | ||||
| 
 | ||||
|   factory NationalityCountries.fromJson(Map<String, dynamic> json) => NationalityCountries( | ||||
|     id: json["ID"], | ||||
|     name: json["Name"], | ||||
|     nameN: json["NameN"], | ||||
|   ); | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() => { | ||||
|     "ID": id, | ||||
|     "Name": name, | ||||
|     "NameN": nameN, | ||||
|   }; | ||||
| } | ||||
| @ -0,0 +1,311 @@ | ||||
| import 'dart:convert'; | ||||
| 
 | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_state.dart'; | ||||
| import 'package:hmg_patient_app_new/core/common_models/nationality_country_model.dart'; | ||||
| import 'package:hmg_patient_app_new/core/dependencies.dart'; | ||||
| import 'package:hmg_patient_app_new/core/enums.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/context_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | ||||
| import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/bottomsheet/generic_bottom_sheet.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/dropdown/dropdown_widget.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/input_widget.dart'; | ||||
| 
 | ||||
| class RegisterNewStep2 extends StatefulWidget { | ||||
|   var nHICData; | ||||
|   var payload; | ||||
| 
 | ||||
|   RegisterNewStep2(this.nHICData, this.payload, {Key? key}) : super(key: key); | ||||
| 
 | ||||
|   @override | ||||
|   _RegisterNew createState() => _RegisterNew(); | ||||
| } | ||||
| 
 | ||||
| class _RegisterNew extends State<RegisterNewStep2> { | ||||
|   bool isFromDubai = true; | ||||
|   List<NationalityCountries> countriesList = []; | ||||
|   AppState? appState; | ||||
|   GenderTypeEnum? selectedGenderType; | ||||
|   MaritalStatusTypeEnum? selectedMaritalStatusType; | ||||
|   CountryEnum? selectedCountry; | ||||
| 
 | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|     // isFromDubai = widget.payload.zipCode!.contains("971") || widget.payload.zipCode!.contains("+971"); | ||||
|     loadCountriesList(); | ||||
|   } | ||||
| 
 | ||||
|   loadCountriesList() async { | ||||
|     appState = getIt.get<AppState>(); | ||||
|     final String response = await DefaultAssetBundle.of(context).loadString('assets/json/countriesList.json'); | ||||
|     final List<dynamic> data = json.decode(response); | ||||
|     countriesList = data.map((e) => NationalityCountries.fromJson(e)).toList(); | ||||
|   } | ||||
| 
 | ||||
|   Widget build(BuildContext context) { | ||||
|     return Scaffold( | ||||
|       appBar: CustomAppBar(onBackPressed: () {}, onLanguageChanged: (lang) {}, hideLogoAndLang: true,), | ||||
|       body: SingleChildScrollView( | ||||
|         reverse: false, | ||||
|         padding: EdgeInsets.only(left: 24.h, right: 24.h, top: 24.h), | ||||
|         child: Column( | ||||
|           crossAxisAlignment: CrossAxisAlignment.start, | ||||
|           children: <Widget>[ | ||||
|             Directionality( | ||||
|               textDirection: Directionality.of(context), | ||||
|               child: Container( | ||||
|                 decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)), | ||||
|                 padding: EdgeInsets.only(left: 16.h, right: 16.h), | ||||
|                 child: Column( | ||||
|                   children: [ | ||||
|                     TextInputWidget( | ||||
|                         labelText: isFromDubai ? LocaleKeys.fullName.tr() : LocaleKeys.name.tr(), | ||||
|                         hintText: isFromDubai ? "name" ?? "" : (widget.nHICData!.firstNameEn!.toUpperCase() + " " + widget.nHICData!.lastNameEn!.toUpperCase()), | ||||
|                         controller: null, | ||||
|                         isEnable: true, | ||||
|                         prefix: null, | ||||
|                         isAllowRadius: false, | ||||
|                         isBorderAllowed: false, | ||||
|                         keyboardType: TextInputType.text, | ||||
|                         isAllowLeadingIcon: true, | ||||
|                         isReadOnly: isFromDubai ? false : true, | ||||
|                         leadingIcon: AppAssets.user_circle), | ||||
|                     Divider(height: 1), | ||||
|                     TextInputWidget( | ||||
|                         labelText: LocaleKeys.nationalIdNumber.tr(), | ||||
|                         hintText: isFromDubai ? "widget.payload.nationalID!" : (widget.nHICData!.idNumber ?? ""), | ||||
|                         controller: null, | ||||
|                         isEnable: true, | ||||
|                         prefix: null, | ||||
|                         isAllowRadius: false, | ||||
|                         isBorderAllowed: false, | ||||
|                         isAllowLeadingIcon: true, | ||||
|                         isReadOnly: true, | ||||
|                         leadingIcon: AppAssets.student_card), | ||||
|                     Divider(height: 1), | ||||
|                     isFromDubai | ||||
|                         ? DropdownWidget( | ||||
|                             labelText: LocaleKeys.gender.tr(), | ||||
|                             hintText: LocaleKeys.malE.tr(), | ||||
|                             isEnable: true, | ||||
|                             dropdownItems: GenderTypeEnum.values.map((e) => appState!.isArabic() ? e.typeAr : e.type).toList(), | ||||
|                             selectedValue: appState!.isArabic() ? selectedGenderType!.typeAr : selectedGenderType?.type, | ||||
|                             // selectionType: SelectionType.dropdown, | ||||
|                             onChange: (val) { | ||||
|                               if (val != null) {} | ||||
|                             }, | ||||
|                             isBorderAllowed: false, | ||||
|                             hasSelectionCustomIcon: true, | ||||
|                             isAllowRadius: false, | ||||
|                             padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0), | ||||
|                             selectionCustomIcon: AppAssets.arrow_down, | ||||
|                             // leadingIcon: 'assets/images/svg/user-full.svg', | ||||
|                           ).withVerticalPadding(8) | ||||
|                         : TextInputWidget( | ||||
|                             labelText: LocaleKeys.gender.tr(), | ||||
|                             hintText: (widget.nHICData!.gender ?? ""), | ||||
|                             controller: null, | ||||
|                             isEnable: true, | ||||
|                             prefix: null, | ||||
|                             isAllowRadius: false, | ||||
|                             isBorderAllowed: false, | ||||
|                             isAllowLeadingIcon: true, | ||||
|                             isReadOnly: isFromDubai ? false : true, | ||||
|                             leadingIcon: AppAssets.user_full, | ||||
|                             onChange: (value) {}), | ||||
|                     Divider(height: 1), | ||||
|                     isFromDubai | ||||
|                         ? DropdownWidget( | ||||
|                             labelText: LocaleKeys.maritalStatus.tr(), | ||||
|                             hintText: LocaleKeys.married.tr(), | ||||
|                             isEnable: true, | ||||
|                             dropdownItems: MaritalStatusTypeEnum.values.map((e) => appState!.isArabic() ? e.typeAr : e.type).toList(), | ||||
|                             selectedValue: appState!.isArabic() ? selectedMaritalStatusType!.typeAr : selectedMaritalStatusType?.type, | ||||
|                             onChange: (val) {}, | ||||
|                             isBorderAllowed: false, | ||||
|                             hasSelectionCustomIcon: true, | ||||
|                             isAllowRadius: false, | ||||
|                             padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0), | ||||
|                             selectionCustomIcon: AppAssets.arrow_down, | ||||
|                             // leadingIcon: 'assets/images/svg/smart-phone.svg', | ||||
|                           ).withVerticalPadding(8) | ||||
|                         : TextInputWidget( | ||||
|                             labelText: LocaleKeys.maritalStatus.tr(), | ||||
|                             hintText: appState!.isArabic() | ||||
|                                 ? (MaritalStatusTypeExtension.fromValue(widget.nHICData!.maritalStatusCode)!.typeAr) | ||||
|                                 : (MaritalStatusTypeExtension.fromValue(widget.nHICData!.maritalStatusCode)!.type), | ||||
|                             isEnable: true, | ||||
|                             prefix: null, | ||||
|                             isAllowRadius: false, | ||||
|                             isBorderAllowed: false, | ||||
|                             isAllowLeadingIcon: true, | ||||
|                             isReadOnly: true, | ||||
|                             leadingIcon: AppAssets.smart_phone, | ||||
|                             onChange: (value) {}), | ||||
|                     Divider(height: 1), | ||||
|                     isFromDubai | ||||
|                         ? DropdownWidget( | ||||
|                             labelText: LocaleKeys.country.tr(), | ||||
|                             hintText: LocaleKeys.uae.tr(), | ||||
|                             isEnable: true, | ||||
|                             dropdownItems: countriesList.map((e) => appState!.isArabic() ? e.nameN ?? "" : e.name ?? "").toList(), | ||||
|                             selectedValue: appState!.isArabic() ? selectedCountry!.nameArabic ?? "" : selectedCountry?.name ?? "", | ||||
|                             onChange: (val) {}, | ||||
|                             isBorderAllowed: false, | ||||
|                             hasSelectionCustomIcon: true, | ||||
|                             isAllowRadius: false, | ||||
|                             padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0), | ||||
|                             selectionCustomIcon: AppAssets.arrow_down, | ||||
|                             // leadingIcon: 'assets/images/svg/globe.svg', | ||||
|                           ).withVerticalPadding(8) | ||||
|                         : TextInputWidget( | ||||
|                             labelText: LocaleKeys.nationality.tr(), | ||||
|                             hintText: appState!.isArabic() | ||||
|                                 ? (countriesList.firstWhere((e) => e.id == (widget.nHICData!.nationalityCode ?? ""), orElse: () => NationalityCountries()).nameN ?? "") | ||||
|                                 : (countriesList.firstWhere((e) => e.id == (widget.nHICData!.nationalityCode ?? ""), orElse: () => NationalityCountries()).name ?? ""), | ||||
|                             isEnable: true, | ||||
|                             prefix: null, | ||||
|                             isAllowRadius: false, | ||||
|                             isBorderAllowed: false, | ||||
|                             isAllowLeadingIcon: true, | ||||
|                             isReadOnly: true, | ||||
|                             leadingIcon: AppAssets.globe, | ||||
|                             onChange: (value) {}), | ||||
|                     Divider(height: 1), | ||||
|                     TextInputWidget( | ||||
|                         labelText: LocaleKeys.mobileNumber.tr(), | ||||
|                         hintText: ("widget.payload.mobileNo" ?? ""), | ||||
|                         controller: null, | ||||
|                         isEnable: true, | ||||
|                         prefix: null, | ||||
|                         isAllowRadius: false, | ||||
|                         isBorderAllowed: false, | ||||
|                         isAllowLeadingIcon: true, | ||||
|                         isReadOnly: true, | ||||
|                         leadingIcon: AppAssets.call, | ||||
|                         onChange: (value) {}), | ||||
|                     Divider(height: 1), | ||||
|                     TextInputWidget( | ||||
|                         labelText: LocaleKeys.dob.tr(), | ||||
|                         hintText: isFromDubai ? "widget.payload.dob!" : (widget.nHICData!.dateOfBirth ?? ""), | ||||
|                         controller: null, | ||||
|                         isEnable: true, | ||||
|                         prefix: null, | ||||
|                         isBorderAllowed: false, | ||||
|                         isAllowLeadingIcon: true, | ||||
|                         isReadOnly: true, | ||||
|                         // selectionType: SelectionType.calendar, | ||||
|                         // selectedValue: widget.payload.dob != null ? Utils.formatDateToDisplay(widget.payload.dob.toString()) : null, | ||||
|                         // selectionCustomIcon: AppAssets.calendar, | ||||
|                         // leadingIcon: AppAssets.birthday_cake, | ||||
|                         onChange: (value) {}), | ||||
|                   ], | ||||
|                 ), | ||||
|               ), | ||||
|             ), | ||||
|             SizedBox(height: 50.h), | ||||
|             Row( | ||||
|               children: [ | ||||
|                 Expanded( | ||||
|                   child: CustomButton( | ||||
|                     text: LocaleKeys.cancel, | ||||
|                     icon: AppAssets.cancel, | ||||
|                     onPressed: () { | ||||
|                       Navigator.of(context).pop(); | ||||
|                     }, | ||||
|                     // fontFamily: context.fontFamily, | ||||
|                     backgroundColor: AppColors.secondaryLightRedColor, | ||||
|                     borderColor: AppColors.secondaryLightRedColor, | ||||
|                     textColor: AppColors.primaryRedColor, | ||||
|                     iconColor: AppColors.primaryRedColor, | ||||
|                   ), | ||||
|                 ), | ||||
|                 SizedBox( | ||||
|                   width: 16, | ||||
|                 ), | ||||
|                 Expanded( | ||||
|                   child: CustomButton( | ||||
|                     backgroundColor: AppColors.lightGreenColor, | ||||
|                     borderColor: AppColors.lightGreenColor, | ||||
|                     textColor: AppColors.textGreenColor, | ||||
|                     text: LocaleKeys.confirm.tr(), | ||||
|                     icon: AppAssets.confirm, | ||||
|                     iconColor: AppColors.textGreenColor, | ||||
|                     onPressed: () { | ||||
|                       // if (isFromDubai) { | ||||
|                       //   if (name == null) { | ||||
|                       //     AppToast.showErrorToast(message: LocaleKeys.enterFullName); | ||||
|                       //     return; | ||||
|                       //   } | ||||
|                       //   if (!name!.contains(" ")) if (selectedGenderType == null) { | ||||
|                       //     AppToast.showErrorToast(message: TranslationBase.of(context).enterFullName); | ||||
|                       //     return; | ||||
|                       //   } | ||||
|                       //   if (selectedMaritalStatusType == null) { | ||||
|                       //     AppToast.showErrorToast(message: TranslationBase.of(context).chooseMaritalStatus); | ||||
|                       //     return; | ||||
|                       //   } | ||||
|                       //   if (selectedCountry == null) { | ||||
|                       //     AppToast.showErrorToast(message: TranslationBase.of(context).chooseCountry); | ||||
|                       //     return; | ||||
|                       //   } | ||||
|                       // } | ||||
| 
 | ||||
|                       showModel(context: context); | ||||
|                     }, | ||||
|                   ), | ||||
|                 ) | ||||
|               ], | ||||
|             ), | ||||
|           ], | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   void showModel({required BuildContext context}) { | ||||
|     showModalBottomSheet( | ||||
|       context: context, | ||||
|       isScrollControlled: true, | ||||
|       isDismissible: false, | ||||
|       backgroundColor: Colors.transparent, | ||||
|       builder: (bottomSheetContext) => Padding( | ||||
|         padding: EdgeInsets.only(bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom), | ||||
|         child: SingleChildScrollView( | ||||
|           child: GenericBottomSheet( | ||||
|             textController: TextEditingController(), | ||||
|             isForEmail: true, | ||||
|             buttons: [ | ||||
|               Padding( | ||||
|                 padding: const EdgeInsets.only(bottom: 10), | ||||
|                 child: CustomButton( | ||||
|                     text: LocaleKeys.submit, | ||||
|                     onPressed: () { | ||||
|                       // if (emailAddress.text.isEmpty) { | ||||
|                       //   Utils.showErrorToast(TranslationBase.of(context).enterEmailAddress); | ||||
|                       //   return; | ||||
|                       // } else { | ||||
|                       //   Navigator.of(context).pop(); | ||||
|                       //   registerNow(); | ||||
|                       // } | ||||
|                     }, | ||||
|                     backgroundColor: AppColors.bgGreenColor, | ||||
|                     borderColor: AppColors.bgGreenColor, | ||||
|                     textColor: AppColors.whiteColor), | ||||
|               ), | ||||
|             ], | ||||
|           ), | ||||
|         ), | ||||
|       ), | ||||
|     ); | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue