From 4461b78565950c3d65bbb40d4aba66d330e11412 Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Mon, 26 Feb 2024 13:21:20 +0700 Subject: [PATCH] fix: add validation form --- .../submission_data/submit_personal_data.dart | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/lib/features/auth/registration/view/submission_data/submit_personal_data.dart b/lib/features/auth/registration/view/submission_data/submit_personal_data.dart index 65e8607..6dca75e 100644 --- a/lib/features/auth/registration/view/submission_data/submit_personal_data.dart +++ b/lib/features/auth/registration/view/submission_data/submit_personal_data.dart @@ -2,6 +2,7 @@ import 'package:cims_apps/application/component/button/button_view.dart'; import 'package:cims_apps/application/component/select_form/select_form_view.dart'; import 'package:cims_apps/application/component/text_caption/text_caption.dart'; import 'package:cims_apps/core/route/route.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submission_parent.dart'; import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; @@ -17,12 +18,13 @@ class SubmitPersonalData extends StatelessWidget { builder: (context, child) { return Consumer( builder: (context, provider, child) { - return SingleChildScrollView( + return SizedBox( + height: SizeConfig.height * .78, child: Form( key: provider.formKeyPersonalData, child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ const TextCaption(title: 'Your personal details'), SelectFormView( @@ -31,6 +33,12 @@ class SubmitPersonalData extends StatelessWidget { ctrl: provider.ctrlOccupation, listItem: provider.listOccupation, onSelect: (value) {}, + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, ), SelectFormView( name: 'Income Level (IDR)', @@ -38,6 +46,12 @@ class SubmitPersonalData extends StatelessWidget { ctrl: provider.ctrlIncome, listItem: provider.listIncome, onSelect: (value) {}, + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, ), SelectFormView( name: 'Marital Status', @@ -45,6 +59,12 @@ class SubmitPersonalData extends StatelessWidget { ctrl: provider.ctrlMarital, listItem: provider.listMarital, onSelect: (value) {}, + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, ), SelectFormView( name: 'Source of Fund', @@ -52,20 +72,28 @@ class SubmitPersonalData extends StatelessWidget { ctrl: provider.ctrlSourceFund, listItem: provider.listSourceFund, onSelect: (value) {}, + validator: (value) { + if (value!.isEmpty) { + return 'Field must be filled'; + } + return null; + }, ), - Align( - alignment: Alignment.bottomCenter, - child: ButtonView( - name: 'Next', - onPressed: () async { + // SizedBox(height: SizeConfig.height * .18), + ButtonView( + marginVertical: 0, + name: 'Next', + onPressed: () async { + if (provider.formKeyPersonalData.currentState! + .validate()) { await provider.next(context).then((value) { if (value) { routePush(context, page: const SubmissionParent()); } }); - }, - ), + } + }, ) ], ),