From f84fe1017d9a8ae3feb34f3e10046e60e580985a Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Mon, 26 Feb 2024 14:00:19 +0700 Subject: [PATCH] fix: add validation form data id card --- .../submission_data/submit_data_id_card.dart | 154 +++++++++++------- .../viewmodel/submission_data_viewmodel.dart | 2 + 2 files changed, 93 insertions(+), 63 deletions(-) diff --git a/lib/features/auth/registration/view/submission_data/submit_data_id_card.dart b/lib/features/auth/registration/view/submission_data/submit_data_id_card.dart index 94b84f2..5150346 100644 --- a/lib/features/auth/registration/view/submission_data/submit_data_id_card.dart +++ b/lib/features/auth/registration/view/submission_data/submit_data_id_card.dart @@ -176,79 +176,107 @@ class SubmitDataIdCard extends StatelessWidget { return SingleChildScrollView( child: Consumer( builder: (context, provider, child) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const TextCaption( - title: 'Check your ID card data for accuracy'), - TextFormView( - name: 'NIK', - keyboardType: TextInputType.number, - ), - TextFormView(name: 'Full Name'), - DatePickerView( + return Form( + key: provider.formKeySubmitIdCard, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const TextCaption( + title: 'Check your ID card data for accuracy'), + TextFormView( + name: 'NIK', + keyboardType: TextInputType.number, + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, + ), + TextFormView( + name: 'Full Name', + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, + ), + DatePickerView( name: 'Birth Date', ctrl: provider.ctrlBirthDate, maxDate: DateTime.now(), isMultipleSelection: false, - enabled: true), - photoDocument(provider), - Container( - width: SizeConfig.width, - padding: const EdgeInsets.symmetric(horizontal: 16.0), - margin: const EdgeInsets.symmetric(vertical: 16.0), - decoration: BoxDecoration( - color: ColorPalette.blue50, - borderRadius: BorderRadius.circular(10), - border: Border.all( - color: ColorPalette.greyLights, - width: 1, - ), + enabled: true, + validatorDate: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const ImageView( - image: PathAssets.iconShield, - width: 20, - height: 22, + photoDocument(provider), + Container( + width: SizeConfig.width, + padding: const EdgeInsets.symmetric(horizontal: 16.0), + margin: const EdgeInsets.symmetric(vertical: 16.0), + decoration: BoxDecoration( + color: ColorPalette.blue50, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: ColorPalette.greyLights, + width: 1, ), - const SizedBox( - width: 8, - ), - const Expanded( - child: Text( - 'Will my data be safe?', - style: TextStyle( - fontWeight: FontWeight.w600, - color: ColorPalette.primary, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const ImageView( + image: PathAssets.iconShield, + width: 20, + height: 22, + ), + const SizedBox( + width: 8, + ), + const Expanded( + child: Text( + 'Will my data be safe?', + style: TextStyle( + fontWeight: FontWeight.w600, + color: ColorPalette.primary, + ), ), ), - ), - IconButton( - onPressed: () { - bottomSheet(); - }, - icon: const Icon( - Icons.arrow_forward_ios, - color: ColorPalette.primary, - size: 20, - ), - ) - ], + IconButton( + onPressed: () { + bottomSheet(); + }, + icon: const Icon( + Icons.arrow_forward_ios, + color: ColorPalette.primary, + size: 20, + ), + ) + ], + ), ), - ), - ButtonView( - name: 'Next', - onPressed: () async { - await provider.next(context).then((value) { - if (value) { - routePush(context, page: const SubmissionParent()); + ButtonView( + name: 'Next', + onPressed: () async { + if (provider.formKeySubmitIdCard.currentState! + .validate()) { + await provider.next(context).then((value) { + if (value) { + routePush(context, + page: const SubmissionParent()); + } + }); } - }); - }, - ) - ], + }, + ) + ], + ), ); }), ); diff --git a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart index bb23b50..46da7a0 100644 --- a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart +++ b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart @@ -14,6 +14,8 @@ class SubmissionDataViewModel extends ChangeNotifier { bool _isEmailVerify = false; bool get isEmailVerify => _isEmailVerify; var formKeyPersonalData = GlobalKey(); + var formKeySubmitEmail = GlobalKey(); + var formKeySubmitIdCard = GlobalKey(); TextEditingController ctrlOccupation = TextEditingController(); TextEditingController ctrlIncome = TextEditingController(); TextEditingController ctrlMarital = TextEditingController();