Untitled
plain_text
a month ago
64 kB
2
Indexable
Never
import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:sanad_flutter/core/widgets/custom_date_text_field.dart'; import 'package:sanad_flutter/features/aseza/residency_application/presentation/bloc/residency_application_bloc.dart'; import '../../../../../core/config/app_localization.dart'; import '../../../../../core/config/sanad_colors.dart'; import '../../../../../core/widgets/custom_button.dart'; import '../../../../../core/widgets/custom_drop_down_id_.dart'; import '../../../../../core/widgets/custom_text.dart'; import '../../../../../core/widgets/custom_text_field.dart'; import '../../../../main/domain/entities/user.dart'; import '../../../../main/presentation/bloc/user_data_bloc.dart'; import 'get_nationalty_residency.dart'; class CompanyRepresentativeInfo extends StatefulWidget { const CompanyRepresentativeInfo({super.key}); @override State<CompanyRepresentativeInfo> createState() => _CompanyRepresentativeInfoState(); } class _CompanyRepresentativeInfoState extends State<CompanyRepresentativeInfo> { String radioSelected2 = 'no'; final formKey = GlobalKey<FormState>(); addInitialValues(BuildContext context, User? user) { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastEntry != null) { ResidencyApplicationBloc.get(context).lastEntryDateController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastEntry! .split('T') .first; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastExit != null) { ResidencyApplicationBloc.get(context).lastExitDateController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastExit! .split('T') .first; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MedicalExamtionStartDate != null) { ResidencyApplicationBloc.get(context) .dateCommencementMedicalExaminationController .text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MedicalExamtionStartDate! .split('T') .first; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MedicalExamtionEndDate != null) { ResidencyApplicationBloc.get(context) .dateCompletionMedicalExaminationController .text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MedicalExamtionEndDate! .split('T') .first; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .GuarantorName != null) { ResidencyApplicationBloc.get(context).sponsorsNameCompany.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .GuarantorName!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .GuarantorPermitEndDate != null) { ResidencyApplicationBloc.get(context) .theExpirationDateOfTheSponsorsAuthorization .text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .GuarantorPermitEndDate!; } if (ResidencyApplicationBloc.get(context).applicationType != 'first_time') { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .RecipientFullName != null) { ResidencyApplicationBloc.get(context).fullResidentNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .RecipientFullName!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .OldResidencyEndDate != null) { ResidencyApplicationBloc.get(context) .previousDateExpirationController .text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .OldResidencyEndDate!; } ResidencyApplicationBloc.get(context).firstNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .FirstName!; ResidencyApplicationBloc.get(context).fathersNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .SecondName!; ResidencyApplicationBloc.get(context).grandfathersNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .ThirdName!; if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Gender != null) { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Gender! .toString() .endsWith('0')) { ResidencyApplicationBloc.get(context).gender = 'male'; } else { ResidencyApplicationBloc.get(context).gender = 'female'; } } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastName != null) { ResidencyApplicationBloc.get(context).familyNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .LastName!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .NationalityName != null) { ResidencyApplicationBloc.get(context).selectedDropdownNationality = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .NationalityName!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .CurrentAddress != null) { ResidencyApplicationBloc.get(context) .residentialAddressController .text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .CurrentAddress!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MotherName != null) { ResidencyApplicationBloc.get(context).mothersNameController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MotherName!; } if (!getTypeEnable()) { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Email != null) { ResidencyApplicationBloc.get(context).emailController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Email!; } } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .PlaceOfBirth != null) { ResidencyApplicationBloc.get(context).placeBirthController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .PlaceOfBirth!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MarityStatus != null) { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .MarityStatus! == 121610001) { ResidencyApplicationBloc.get(context).maritalStatus = 'maried'; } else { ResidencyApplicationBloc.get(context).maritalStatus = 'single'; } } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Qualification != null) { if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Qualification! == 121610000) { ResidencyApplicationBloc.get(context).degree = 'notFound'; } else if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Qualification! == 121610001) { ResidencyApplicationBloc.get(context).degree = 'diploma'; } else if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Qualification! == 121610002) { ResidencyApplicationBloc.get(context).degree = 'Bachelors'; } else { ResidencyApplicationBloc.get(context).degree = 'otherThat'; } } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Career != null) { ResidencyApplicationBloc.get(context).occupationController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .Career!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .PlaceOfIssuance != null) { ResidencyApplicationBloc.get(context).placeOfIssueController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .PlaceOfIssuance!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .DateOfIssuance != null) { context.read<ResidencyApplicationBloc>().releaseDateController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .DateOfIssuance!; } if (ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .DateOfExpiry != null) { context.read<ResidencyApplicationBloc>().endDateController.text = ResidencyApplicationBloc.get(context) .ResidencyApplicationCreate! .DateOfExpiry! .split('T') .first; } context.read<ResidencyApplicationBloc>().mojDocumentType = 'passport'; } } @override Widget build(BuildContext context) { var locale = AppLocalization.of(context); return BlocBuilder<ResidencyApplicationBloc, ResidencyApplicationState>( builder: (context, state) { User? user = context.read<UserDataBloc>().userData; var locale = AppLocalization.of(context); addInitialValues(context, user); return Form( key: formKey, child: Padding( padding: const EdgeInsets.only(top: 18), child: SizedBox( width: MediaQuery.of(context).size.width * double.infinity, child: SingleChildScrollView( child: Column( children: [ CustomText( '${AppLocalization.of(context).getTranslatedValues("Electronic link information")}', style: const TextStyle(color: primaryColor), ), const SizedBox(height: 10), lastEntryDateWidgets(context), lastExitDateWidgets(context), dateCommencementMedicalExaminationWidget(context), dateCompletionMedicalExaminationWidget(context), sponsorsNameCompanyWidget(context), theExpirationDateOfTheSponsorsAuthorizationWidget(context), fullResidentNameWidget(context), previousDateExpirationWidget(context), CustomText( '${AppLocalization.of(context).getTranslatedValues("Resident Information")}', style: const TextStyle(color: primaryColor), ), firstNameWidget(context), fathersNameWidget(context), grandfathersNameWidget(context), familyNameWidget(context), nationalityWidget(context), genderWidget(context, locale), mothersNameWidget(context), emailWidget(context), placeBirth(context), maritalStatus(context, locale), degreeWidget(context, locale), occupationWidget(context), // CustomText( // '${AppLocalization.of(context).getTranslatedValues("Request Details")}', // style: const TextStyle(color: primaryColor), // ), residentialAddressWidget(context), CustomText( '${AppLocalization.of(context).getTranslatedValues("Worker Passport Info2")}', style: const TextStyle(color: primaryColor), ), mojDocumentTypeWidget(context, locale), placeOfIssueWidget(context), releaseDateWidget(context), endDateWidget(context), hasThePassportBeenRenewed(context), hasThePassportBeenExtended(context), dateForExpandDate(context), const SizedBox(height: 10), buttonWidget(context), ], ), ), ), ), ); }, ); } bool isFieldEnableByType() { if (context.read<ResidencyApplicationBloc>().applicationType == 'first_time') { return true; } return false; } //Fathers name Widget lastEntryDateWidgets(BuildContext context) { log(context.read<ResidencyApplicationBloc>().applicationType); if (context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType != 'modify_card_information') { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context).lastEntryDateController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Last entry date")}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } return const SizedBox.shrink(); } Widget lastExitDateWidgets(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType != 'modify_card_information' && (context.read<ResidencyApplicationBloc>().applicationType != 'first_time' && context.read<ResidencyApplicationBloc>().residenceStatus != 'student_residency')) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context).lastExitDateController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Last exit date")}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } else { return const SizedBox.shrink(); } } Widget dateCommencementMedicalExaminationWidget(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType == 'modify_card_information' || context.read<ResidencyApplicationBloc>().applicationType == 'first_time' && ResidencyApplicationBloc.get(context) .dateCommencementMedicalExaminationController .text .isNotEmpty) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context) .dateCommencementMedicalExaminationController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Date of commencement of medical examination")}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } return const SizedBox.shrink(); } Widget dateCompletionMedicalExaminationWidget(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType == 'modify_card_information' || context.read<ResidencyApplicationBloc>().applicationType == 'first_time' && ResidencyApplicationBloc.get(context) .dateCommencementMedicalExaminationController .text .isNotEmpty) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context) .dateCompletionMedicalExaminationController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Date of completion of medical examination")}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } return const SizedBox.shrink(); } Widget sponsorsNameCompanyWidget(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType == 'first_time' && context.read<ResidencyApplicationBloc>().residenceStatus == 'investor_residency' || context.read<ResidencyApplicationBloc>().applicationType == 'damage_or_loss_allowance') { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context).sponsorsNameCompany, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Sponsors NameCompany")} *"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } else { return const SizedBox.shrink(); } } Widget theExpirationDateOfTheSponsorsAuthorizationWidget( BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType == 'first_time' && context.read<ResidencyApplicationBloc>().residenceStatus == 'investor_residency') { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context) .theExpirationDateOfTheSponsorsAuthorization, label: Row( mainAxisSize: MainAxisSize.min, children: [ Expanded( child: Text( "${AppLocalization.of(context).getTranslatedValues("The expiration date of the sponsors authorization")} *"), ), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } else { return const SizedBox.shrink(); } } Widget fullResidentNameWidget(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'first_time') { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context) .fullResidentNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Full Resident Name")} *"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } return const SizedBox.shrink(); } Widget previousDateExpirationWidget(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'first_time' && context.read<ResidencyApplicationBloc>().residenceStatus != 'student_residency') { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: false, controller: ResidencyApplicationBloc.get(context) .previousDateExpirationController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Previous date of expiration")}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } return const SizedBox.shrink(); } Widget firstNameWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).firstNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("First Name")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget fathersNameWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType() || enableFieldData(), controller: ResidencyApplicationBloc.get(context).fathersNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Fathers name")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } bool enableFieldData() { if (context.read<ResidencyApplicationBloc>().applicationType == 'modify_card_information') { return true; } return false; } Widget grandfathersNameWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType() || enableFieldData(), controller: ResidencyApplicationBloc.get(context) .grandfathersNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Grandfathers name")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget familyNameWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).familyNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Family name")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget nationalityWidget(BuildContext context) { return Column( children: const [ NationalitiesWidget(), SizedBox(height: 10), ], ); // return Column( // children: [ // SizedBox( // width: MediaQuery.of(context).size.width * 0.9, // child: CustomTextField( // enabled: isFieldEnableByType(), // controller: // ResidencyApplicationBloc.get(context).nationalityController, // label: Row( // mainAxisSize: MainAxisSize.min, // children: [ // Text( // "${AppLocalization.of(context).getTranslatedValues("nationality")}"), // ], // ), // validator: (value) { // if (value == null || value.isEmpty) { // return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; // } // return null; // }, // ), // ), // const SizedBox(height: 10), // ], // ); } Widget genderWidget(BuildContext context, var locale) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.95, child: CustomDropDownID( items: getGender(locale), labelText: "${locale.getTranslatedValues('gender')} ${isFieldEnableByType() ? ' *' : ''}", value: context.read<ResidencyApplicationBloc>().gender, onChanged: getTypeEnable() ? (p0) { context.read<ResidencyApplicationBloc>().gender = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : isFieldEnableByType() ? (p0) { context.read<ResidencyApplicationBloc>().gender = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : null, ), // CustomTextField( // enabled: isFieldEnableByType(), // controller: ResidencyApplicationBloc.get(context).genderController, // label: Row( // mainAxisSize: MainAxisSize.min, // children: [ // Text( // "${AppLocalization.of(context).getTranslatedValues("gender")}"), // ], // ), // validator: (value) { // if (value == null || value.isEmpty) { // return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; // } // return null; // }, // ), ), const SizedBox(height: 10), ], ); } List<DropdownMenuItem<String>> getGender(var locale) { return [ DropdownMenuItem( value: 'Please select', child: Text("${locale.getTranslatedValues('please_select')}"), ), DropdownMenuItem( value: 'male', child: Text("${locale.getTranslatedValues('male')}"), ), DropdownMenuItem( value: 'female', child: Text("${locale.getTranslatedValues('female')}"), ), ]; } Widget mothersNameWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType() || enableFieldData(), controller: ResidencyApplicationBloc.get(context).mothersNameController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Mothers name")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget emailWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: enableFieldData() ? true : getTypeActive() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).emailController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("email")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } bool getTypeActive() { if (ResidencyApplicationBloc.get(context).applicationType == 'renewal' || ResidencyApplicationBloc.get(context).applicationType == 'first_time') { return true; } return false; } Widget placeBirth(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).placeBirthController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Place of Birth")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget maritalStatus(BuildContext context, var locale) { return Column( children: [ const SizedBox(height: 10), SizedBox( width: MediaQuery.of(context).size.width * 0.95, child: CustomDropDownID( items: getMaritalStatus(locale), labelText: "${locale.getTranslatedValues('Marital status')} ${isFieldEnableByType() ? ' *' : ''}", value: context.read<ResidencyApplicationBloc>().maritalStatus, onChanged: getTypeActive() || enableFieldData() ? (p0) { context.read<ResidencyApplicationBloc>().maritalStatus = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : isFieldEnableByType() ? (p0) { context.read<ResidencyApplicationBloc>().maritalStatus = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : null, ), ), const SizedBox(height: 10), ], ); } List<DropdownMenuItem<String>> getMaritalStatus(var locale) { return [ DropdownMenuItem( value: 'Please select', child: Text("${locale.getTranslatedValues('please_select')}"), ), DropdownMenuItem( value: 'single', child: Text("${locale.getTranslatedValues('single')}"), ), DropdownMenuItem( value: 'maried', child: Text("${locale.getTranslatedValues('maried')}"), ), ]; } Widget degreeWidget(BuildContext context, var locale) { return Column( children: [ const SizedBox(height: 10), SizedBox( width: MediaQuery.of(context).size.width * 0.95, child: CustomDropDownID( items: getDegree(locale), labelText: "${locale.getTranslatedValues('degree')} ${isFieldEnableByType() ? ' *' : ''}", value: context.read<ResidencyApplicationBloc>().degree, onChanged: getTypeActive() || enableFieldData() ? (p0) { context.read<ResidencyApplicationBloc>().degree = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : isFieldEnableByType() ? (p0) { context.read<ResidencyApplicationBloc>().degree = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : null, ), ), const SizedBox(height: 10), ], ); } List<DropdownMenuItem<String>> getDegree(var locale) { return [ DropdownMenuItem( value: 'Please select', child: Text("${locale.getTranslatedValues('please_select')}"), ), DropdownMenuItem( value: 'notFound', child: Text("${locale.getTranslatedValues('notFound')}"), ), DropdownMenuItem( value: 'diploma', child: Text("${locale.getTranslatedValues('diploma')}"), ), DropdownMenuItem( value: 'Bachelors', child: Text("${locale.getTranslatedValues('Bachelors')}"), ), DropdownMenuItem( value: 'otherThat', child: Text("${locale.getTranslatedValues('otherThat')}"), ), ]; } Widget occupationWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).occupationController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Occupation")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget residentialAddressWidget(BuildContext context) { return Column( children: [ const SizedBox(height: 10), SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: getTypeActive() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context) .residentialAddressController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Residential address")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), if (isFieldEnableByType() && context.read<ResidencyApplicationBloc>().residenceStatus == 'student_residency') SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: getTypeEnable() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).universityName, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("universityName")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), if (getTypeEnable() || ResidencyApplicationBloc.get(context).applicationType == 'renewal' && context.read<ResidencyApplicationBloc>().residenceStatus == 'residence_of_a_spouse_dependent') SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: CustomDateTextField( controller: context.read<ResidencyApplicationBloc>().dateOfMarriage, label: '${AppLocalization.of(context).getTranslatedValues("date_of_marriage")} ${isFieldEnableByType() ? ' *' : ''}', ), ), if (getTypeEnable() || ResidencyApplicationBloc.get(context).applicationType == 'renewal' && context.read<ResidencyApplicationBloc>().residenceStatus == 'residence_of_a_spouse_dependent') const SizedBox(height: 10), if (enableFieldData()) SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: CustomTextField( controller: ResidencyApplicationBloc.get(context) .justificationForTheAmendmentRequest, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Justification for the amendment request")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), if (getTypeEnable()) const SizedBox(height: 10), ], ); } Widget mojDocumentTypeWidget(BuildContext context, var locale) { return Column( children: [ const SizedBox(height: 20), SizedBox( width: MediaQuery.of(context).size.width * 0.95, child: CustomDropDownID( items: getMojDocumentType(locale), labelText: "${locale.getTranslatedValues('moj_document_type')} ${isFieldEnableByType() ? ' *' : ''}", value: context.read<ResidencyApplicationBloc>().mojDocumentType, onChanged: getTypeEnable() ? (p0) { context .read<ResidencyApplicationBloc>() .endDateController .text = ''; context.read<ResidencyApplicationBloc>().mojDocumentType = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : isFieldEnableByType() ? (p0) { context .read<ResidencyApplicationBloc>() .endDateController .text = ''; context .read<ResidencyApplicationBloc>() .mojDocumentType = p0.toString(); context.read<ResidencyApplicationBloc>().add(Refresh()); } : null, ), ), const SizedBox(height: 10), ], ); } bool getTypeEnable() { if (context.read<ResidencyApplicationBloc>().applicationType == 'modify_card_information') { return true; } return false; } List<DropdownMenuItem<String>> getMojDocumentType(var locale) { return [ DropdownMenuItem( value: 'Please select', child: Text("${locale.getTranslatedValues('please_select')}"), ), DropdownMenuItem( value: 'passport', child: Text("${locale.getTranslatedValues('passport')}"), ), DropdownMenuItem( value: 'travelDocument', child: Text("${locale.getTranslatedValues('travelDocument')}"), ), ]; } Widget placeOfIssueWidget(BuildContext context) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: getTypeEnable() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).placeOfIssueController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Place of issue")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 10), ], ); } Widget releaseDateWidget(BuildContext context) { if (getTypeEnable()) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: CustomDateTextField( controller: context .read<ResidencyApplicationBloc>() .releaseDateController, maximumDate: DateTime.now().add(const Duration(seconds: 1)), label: '${AppLocalization.of(context).getTranslatedValues("Release Date")} ${isFieldEnableByType() ? ' *' : ''}', ), ), const SizedBox(height: 20), ], ); } return Column( children: [ if (isFieldEnableByType()) SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomDateTextField( controller: context .read<ResidencyApplicationBloc>() .releaseDateController, maximumDate: DateTime.now().add(const Duration(seconds: 1)), label: '${AppLocalization.of(context).getTranslatedValues("Release Date")} ${isFieldEnableByType() ? ' *' : ''}', ), ) else CustomTextField( enabled: getTypeEnable() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).releaseDateController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("Release Date")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), const SizedBox(height: 20), ], ); } DateTime getInitDate() { if (context.read<ResidencyApplicationBloc>().mojDocumentType == 'passport') { return DateTime.now().toUtc().add(const Duration(days: 90)); } else { return DateTime.now().toUtc().add(const Duration(days: 180)); } } Widget endDateWidget(BuildContext context) { if (isFieldEnableByType() || enableFieldData()) { return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: CustomDateTextField( enabled: context.read<ResidencyApplicationBloc>().mojDocumentType != 'Please select', controller: context.read<ResidencyApplicationBloc>().endDateController, initalDate: getInitDate(), onComplete: () { context.read<ResidencyApplicationBloc>().add(Refresh()); }, label: '${AppLocalization.of(context).getTranslatedValues("End Date")} ${isFieldEnableByType() ? ' *' : ''}', ), ), const SizedBox(height: 20), ], ); } return Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.9, child: CustomTextField( enabled: getTypeEnable() ? true : isFieldEnableByType(), controller: ResidencyApplicationBloc.get(context).endDateController, label: Row( mainAxisSize: MainAxisSize.min, children: [ Text( "${AppLocalization.of(context).getTranslatedValues("End Date")} ${isFieldEnableByType() ? ' *' : ''}"), ], ), validator: (value) { if (value == null || value.isEmpty) { return '${AppLocalization.of(context).getTranslatedValues("this_field_is_required")}'; } return null; }, ), ), const SizedBox(height: 20), ], ); } Widget hasThePassportBeenRenewed(BuildContext context) { if (context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType != 'modify_card_information') { return SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: Row( children: [ Expanded( child: CustomText( AppLocalization.of(context) .getTranslatedValues("Has the passport been renewed"), style: const TextStyle(fontSize: 15), ), ), const SizedBox( width: 10, ), Row( children: [ SizedBox( height: 20, child: Row( children: [ CustomText( AppLocalization.of(context) .getTranslatedValues("yes"), ), const SizedBox( width: 5, ), SizedBox( width: 15, height: 15, child: Radio( value: "yes", groupValue: ResidencyApplicationBloc.get(context) .radioSelected, onChanged: isFieldEnableByType() ? (value) { ResidencyApplicationBloc.get(context) .radioSelected = 'yes'; context .read<ResidencyApplicationBloc>() .add(Refresh()); } : null, ), ), ], )), const SizedBox( width: 10, ), SizedBox( height: 20, child: Row( children: [ CustomText( AppLocalization.of(context).getTranslatedValues("no"), ), const SizedBox( width: 5, ), SizedBox( height: 15, width: 15, child: Radio( value: "no", groupValue: ResidencyApplicationBloc.get(context) .radioSelected, onChanged: isFieldEnableByType() ? (value) { ResidencyApplicationBloc.get(context) .radioSelected = 'no'; context .read<ResidencyApplicationBloc>() .add(Refresh()); } : null, ), ), ], ), ), ], ), ], )); } else { return const SizedBox.shrink(); } } Widget hasThePassportBeenExtended(BuildContext context) { if (!isFieldEnableByType() && context.read<ResidencyApplicationBloc>().applicationType != 'damage_or_loss_allowance' && context.read<ResidencyApplicationBloc>().applicationType != 'modify_card_information') { return Padding( padding: const EdgeInsets.only(top: 10.0), child: SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: Row( children: [ CustomText( AppLocalization.of(context) .getTranslatedValues("Has the passport been extended?"), style: const TextStyle(fontSize: 15), ), const SizedBox(width: 10), Row( children: [ SizedBox( height: 20, child: Row( children: [ CustomText( AppLocalization.of(context) .getTranslatedValues("yes"), ), const SizedBox( width: 5, ), SizedBox( width: 15, height: 15, child: Radio( value: "yes", groupValue: radioSelected2, onChanged: null, ), ), ], )), const SizedBox( width: 10, ), SizedBox( height: 20, child: Row( children: [ CustomText( AppLocalization.of(context) .getTranslatedValues("no"), ), const SizedBox( width: 5, ), SizedBox( height: 15, width: 15, child: Radio( value: "no", groupValue: radioSelected2, onChanged: null, ), ), ], ), ), ], ), ], )), ); } else { return const SizedBox.shrink(); } } DateTime? getEndDate() { if (context .read<ResidencyApplicationBloc>() .endDateController .text .isEmpty) { context.read<ResidencyApplicationBloc>().dateForExpandDate.text = ''; return null; } String dateString = context.read<ResidencyApplicationBloc>().endDateController.text; List<String> parts = dateString.split('/'); int month = int.parse(parts[1]); int day = int.parse(parts[0]); int year = int.parse(parts[2]); DateTime dateTime = DateTime(year, month, day); return dateTime; } Widget dateForExpandDate(BuildContext context) { if (isFieldEnableByType() && ResidencyApplicationBloc.get(context).radioSelected == 'yes') { return Padding( padding: const EdgeInsets.only(top: 20), child: Column( children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.90, child: CustomDateTextField( enabled: context .read<ResidencyApplicationBloc>() .endDateController .text .isNotEmpty, controller: context.read<ResidencyApplicationBloc>().dateForExpandDate, initalDate: getEndDate(), label: '${AppLocalization.of(context).getTranslatedValues("dateForExpandDate")} ${isFieldEnableByType() ? ' *' : ''}', ), ), const SizedBox(height: 20), ], ), ); } return const SizedBox.shrink(); } Widget buttonWidget(BuildContext context) => SizedBox( width: MediaQuery.of(context).size.width * 0.85, child: CustomButton( onPressed: () { if (formKey.currentState!.validate()) { if (context.read<ResidencyApplicationBloc>().applicationType == 'first_time') { if (context.read<ResidencyApplicationBloc>().gender == 'Please select' || context.read<ResidencyApplicationBloc>().mojDocumentType == 'Please select' || context .read<ResidencyApplicationBloc>() .releaseDateController .text .isEmpty || context .read<ResidencyApplicationBloc>() .endDateController .text .isEmpty || context.read<ResidencyApplicationBloc>().maritalStatus == 'Please select' || ResidencyApplicationBloc.get(context).degree == 'Please select') { Fluttertoast.showToast( msg: AppLocalization.of(context) .getTranslatedValues("fields_required"), toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black, textColor: Colors.white, fontSize: 16.0); } else { ResidencyApplicationBloc.get(context).add(AttachmentCases()); ResidencyApplicationBloc.get(context).add(StartActivities()); ResidencyApplicationBloc.get(context).add(AddStep()); } } else { ResidencyApplicationBloc.get(context).add(AttachmentCases()); ResidencyApplicationBloc.get(context).add(StartActivities()); ResidencyApplicationBloc.get(context).add(AddStep()); } } }, backgroundColor: primaryColor, child: CustomText( AppLocalization.of(context).getTranslatedValues('continue')), ), ); }