import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import '../../../core/constants/app_assets.dart'; import '../../../core/constants/form_field_constants.dart'; import '../../../core/constants/translation_keys.dart'; import '../../../custom_widgets/Fields/input_field.dart'; import '../../../custom_widgets/custom_app_bar.dart'; import '../../../custom_widgets/custom_button.dart'; import '../../../res/app_colors.dart'; import '../controllers/new_beneficiary_controller.dart'; class NewBeneficiaryView extends GetView { const NewBeneficiaryView({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @override Widget build(BuildContext context) { String className = runtimeType.toString().split('.').last; controller.className = className; return Scaffold( appBar: showAppBar ? DashBoardAppBar( title: "New Beneficiary", onBackButtonPressed: () { Get.back(); controller.clearNewBeneficiaryControllers(); }, ) : null, persistentFooterButtons: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), child: SizedBox( width: double.infinity, child: CustomButton( buttonColor: AppColors.colorButton, onPressed: () { controller.addToNewBeneficiary(); }, buttonText: TranslationKeys.makeTranslation(TranslationKeys.textAddToBeneficiary), buttonPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), icon: const Icon(Icons.add, size: 18), iconPadding: const EdgeInsets.only(right: 10.0), ), ), ), ], body: SingleChildScrollView( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 20.0), child: Obx(() { return Column( children: [ controller.accountTitleField = InputField( refKey: FormFieldConstants.instance().getFormKey("${className}accountTitleField"), controller: FormFieldConstants.instance().getController("${className}accountTitleField"), labelText: "Account Title", hintText: "Enter your account name", ), controller.accountNumberField = InputField( refKey: FormFieldConstants.instance().getFormKey("${className}accountNumberField"), controller: FormFieldConstants.instance().getController("${className}accountNumberField"), labelText: "Account Number", hintText: "Enter your account number", ), controller.selectRecipientDetailField = InputField( refKey: FormFieldConstants.instance().getFormKey("${className}selectRecipientDetailField"), controller: FormFieldConstants.instance().getController("${className}selectRecipientDetailField"), labelText: "Recipient Detail", isDropDown: true, hintText: "Select recipient detail", dropDownType: DropDownType.SPECIAL, items: controller.allRecipientDetailOptions, onItemSelected: (item) { controller.updateRecipientDetail(item); }, ), Column( children: [ Visibility( visible: controller.selectedRecipientDetailOption.value.id == controller.OPTION_PHONE, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( flex: 8, child: controller.identityPhoneNumberField = InputField( enableInteractiveSelection: false, maxLines: 1, keyboardType: TextInputType.phone, refKey: FormFieldConstants.instance().getFormKey("${className}identityPhoneNumberField"), controller: FormFieldConstants.instance().getController("${className}identityPhoneNumberField"), labelText: TranslationKeys.makeTranslation(TranslationKeys.textPhoneNumber), hintText: "Select phone number", onChanged: (val) { controller.recipientCardNameField.clear(); }, suffixIcon: SizedBox( width: 70, child: Row( children: [ GestureDetector( onTap: () { controller.scanQr(); }, child: const Icon(Icons.qr_code, size: 25, color: AppColors.colorPrimary)), const SizedBox( width: 8, ), InkWell( customBorder: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50), ), onTap: () { controller.selectContact(); }, child: Padding( padding: const EdgeInsets.all(5.0), child: SvgPicture.asset(AppAssets.ic_select_contact, height: 25, width: 25), ), ), ], ), ), readOnly: true, showCursor: false, onClick: () { controller.selectContact(); }, )), const SizedBox(width: 10), Expanded( flex: 2, child: Column( children: [ const SizedBox(height: 35), CustomButton( onPressed: () { FocusScope.of(context).requestFocus(FocusNode()); controller.verifyAccountAgainstIt(); }, textStyle: context.textTheme.bodyMedium!.copyWith(fontSize: 11, fontWeight: FontWeight.w500, color: Colors.white), buttonText: TranslationKeys.makeTranslation(TranslationKeys.textVerify), buttonPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15), buttonColor: AppColors.colorButton), ], ), ) ], ), ), Visibility( visible: controller.selectedRecipientDetailOption.value.id == controller.OPTION_EMAIL, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( flex: 8, child: controller.identityEmailField = InputField( enableInteractiveSelection: false, maxLines: 1, textInputAction: TextInputAction.done, keyboardType: TextInputType.emailAddress, refKey: FormFieldConstants.instance().getFormKey("${className}identityEmailField"), controller: FormFieldConstants.instance().getController("${className}identityEmailField"), labelText: TranslationKeys.makeTranslation(TranslationKeys.textEmail), hintText: "Enter your email", onChanged: (val) { controller.recipientCardNameField.clear(); }, readOnly: true, showCursor: false, onClick: () { controller.selectContact(); }, )), const SizedBox(width: 10), Expanded( flex: 2, child: Column( children: [ const SizedBox(height: 35), CustomButton( onPressed: () { FocusScope.of(context).requestFocus(FocusNode()); controller.verifyAccountAgainstIt(); }, textStyle: context.textTheme.bodyMedium!.copyWith(fontSize: 11, fontWeight: FontWeight.w500, color: Colors.white), buttonText: TranslationKeys.makeTranslation(TranslationKeys.textVerify), buttonPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15), buttonColor: AppColors.colorButton), ], ), ) ], ), ), ], ), controller.recipientCardNameField = InputField( enableInteractiveSelection: false, refKey: FormFieldConstants.instance().getFormKey("${className}recipientCardNameField"), controller: FormFieldConstants.instance().getController("${className}recipientCardNameField"), labelText: TranslationKeys.makeTranslation("Account Title"), hintText: "Account title", readOnly: true, showCursor: false, ), controller.nickNameField = InputField( enableInteractiveSelection: false, refKey: FormFieldConstants.instance().getFormKey("${className}nickNameField"), controller: FormFieldConstants.instance().getController("${className}nickNameField"), labelText: "Nick Name", hintText: "Enter your nick name", ), controller.emailIDField = InputField( refKey: FormFieldConstants.instance().getFormKey("${className}emailIDField"), controller: FormFieldConstants.instance().getController("${className}emailIDField"), labelText: "Email ID", hintText: "Enter your email id", ), controller.phoneNumberField = InputField( refKey: FormFieldConstants.instance().getFormKey("${className}phoneNumberField"), controller: FormFieldConstants.instance().getController("${className}phoneNumberField"), labelText: "Phone Number", keyboardType: TextInputType.number, hintText: "Enter your phone number", ), ], ); }), ), ), ); } }