From ff1886cec17e7fecd22cfeb004d8d588b1cb7fd7 Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Mon, 5 Feb 2024 18:11:16 +0700 Subject: [PATCH] fix: submission data regis --- .../component/text_form/text_form_view.dart | 8 +- .../registration/view/registration_view.dart | 3 +- .../submission_data/submission_parent.dart | 132 +++++++++--------- .../view/submission_data/submit_email.dart | 74 +++++++++- .../submission_data/submit_personal_data.dart | 52 ++++++- 5 files changed, 183 insertions(+), 86 deletions(-) diff --git a/lib/application/component/text_form/text_form_view.dart b/lib/application/component/text_form/text_form_view.dart index a533305..8540251 100644 --- a/lib/application/component/text_form/text_form_view.dart +++ b/lib/application/component/text_form/text_form_view.dart @@ -155,7 +155,7 @@ class TextFormView extends StatelessWidget { hintStyle: hintTextStyle ?? const TextStyle( fontSize: 14, - color: Colors.grey, + color: ColorPalette.greyFont, fontWeight: FontWeight.normal, ), isDense: true, @@ -167,19 +167,19 @@ class TextFormView extends StatelessWidget { disabledBorder: OutlineInputBorder( borderRadius: _borderRadius, borderSide: BorderSide( - color: disabledborderColor ?? ColorPalette.greyFont, + color: disabledborderColor ?? ColorPalette.greyBorder, ), ), enabledBorder: OutlineInputBorder( borderRadius: _borderRadius, borderSide: BorderSide( - color: enabledborderColor ?? ColorPalette.greyBase, + color: enabledborderColor ?? ColorPalette.greyBorder, ), ), focusedBorder: OutlineInputBorder( borderRadius: _borderRadius, borderSide: BorderSide( - color: focusedBorderColor ?? ColorPalette.greyBase, + color: focusedBorderColor ?? ColorPalette.greyBorder, ), ), border: OutlineInputBorder(borderRadius: _borderRadius), diff --git a/lib/features/auth/registration/view/registration_view.dart b/lib/features/auth/registration/view/registration_view.dart index 4995bec..b98fb40 100644 --- a/lib/features/auth/registration/view/registration_view.dart +++ b/lib/features/auth/registration/view/registration_view.dart @@ -3,7 +3,6 @@ import 'package:cims_apps/application/component/text_caption/text_caption.dart'; import 'package:cims_apps/application/component/text_form/text_form_view.dart'; import 'package:cims_apps/core/route/route.dart'; import 'package:cims_apps/features/auth/registration/view/initial_registration_step.dart'; -import 'package:cims_apps/features/bottom_navigation_view.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -42,7 +41,7 @@ class RegistrationView extends StatelessWidget { text: 'Already have an account? ', style: TextStyle( color: Colors.black, - decoration: TextDecoration.underline, + decoration: TextDecoration.none, ), ), TextSpan( diff --git a/lib/features/auth/registration/view/submission_data/submission_parent.dart b/lib/features/auth/registration/view/submission_data/submission_parent.dart index 12d67a3..6c962f4 100644 --- a/lib/features/auth/registration/view/submission_data/submission_parent.dart +++ b/lib/features/auth/registration/view/submission_data/submission_parent.dart @@ -1,9 +1,12 @@ import 'package:cims_apps/application/component/button/button_view.dart'; import 'package:cims_apps/application/theme/color_palette.dart'; import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:cims_apps/features/auth/registration/view/submission_data/initial_take_photo.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submit_email.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submit_personal_data.dart'; +import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class SubmissionParent extends StatefulWidget { static const routeName = '/SubmissionParent'; @@ -14,29 +17,16 @@ class SubmissionParent extends StatefulWidget { } class _SubmissionParentState extends State { - int _currentStep = 1; - final int _stepAmount = 9; Widget _stepItem({bool isCurrentStep = false, bool isDone = false}) { - return GestureDetector( - onTap: () { - setState(() { - if (_currentStep > 1) { - _currentStep--; - } else if (_currentStep == 1) { - _currentStep++; - } - }); - }, - child: Container( - margin: const EdgeInsets.only(right: 4.0, left: 4.0), - height: 6, - width: SizeConfig.width * .08, - decoration: BoxDecoration( - color: isCurrentStep || isDone - ? ColorPalette.primary - : ColorPalette.greyBorderNeutrals, - borderRadius: BorderRadius.circular(50), - ), + return Container( + margin: const EdgeInsets.only(right: 4.0, left: 4.0), + height: 6, + width: SizeConfig.width * .08, + decoration: BoxDecoration( + color: isCurrentStep || isDone + ? ColorPalette.primary + : ColorPalette.greyBorderNeutrals, + borderRadius: BorderRadius.circular(50), ), ); } @@ -48,9 +38,7 @@ class _SubmissionParentState extends State { case 2: return const SubmitEmail(); case 3: - return Container( - child: Text("Step 3"), - ); + return const InitialTakePhoto(); case 4: return Container( child: Text("Step 4"), @@ -80,48 +68,58 @@ class _SubmissionParentState extends State { @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('Registration'), - ), - body: Stack( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16.0, vertical: 16.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: List.generate( - _stepAmount, - (index) => _stepItem( - isCurrentStep: _currentStep == index + 1, - ), - ), - ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: _content(_currentStep), - ) - ], - ), - Align( - alignment: Alignment.bottomCenter, - child: ButtonView( - name: 'Next', - marginVertical: 16.0, - onPressed: () { - setState(() { - _currentStep++; - }); - }, + return ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + builder: (context, child) { + return Scaffold( + appBar: AppBar( + title: const Text('Registration'), ), - ) - ], - ), - ); + body: Stack( + children: [ + Consumer( + builder: (context, provider, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: List.generate( + provider.stepAmount, + (index) => _stepItem( + isCurrentStep: provider.currentStep == index + 1, + ), + ), + ), + ), + Expanded( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: _content(provider.currentStep), + ), + ), + provider.currentStep == 3 + ? const SizedBox() + : Align( + alignment: Alignment.bottomCenter, + child: ButtonView( + name: 'Next', + marginVertical: 16.0, + onPressed: () { + provider.nextSubmission(context); + }, + ), + ) + ], + ); + }), + ], + ), + ); + }); } } diff --git a/lib/features/auth/registration/view/submission_data/submit_email.dart b/lib/features/auth/registration/view/submission_data/submit_email.dart index c5d086c..a1c6de1 100644 --- a/lib/features/auth/registration/view/submission_data/submit_email.dart +++ b/lib/features/auth/registration/view/submission_data/submit_email.dart @@ -1,21 +1,81 @@ +import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/image/image_view.dart'; import 'package:cims_apps/application/component/text_caption/text_caption.dart'; import 'package:cims_apps/application/component/text_form/text_form_view.dart'; +import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class SubmitEmail extends StatelessWidget { const SubmitEmail({Key? key}) : super(key: key); - @override - Widget build(BuildContext context) { + Widget _emailVerify() { return Column( - crossAxisAlignment: CrossAxisAlignment.start, children: [ - const TextCaption(title: 'Enter your e-mail'), - TextFormView( - name: 'E-mail Address', - hintText: 'Input e-mail address', + const ImageView(image: PathAssets.imgEmail), + Align( + alignment: Alignment.center, + child: RichText( + textAlign: TextAlign.center, + text: TextSpan(children: [ + const TextSpan( + text: + 'We have sent a verification link to your e-mail. \nPlease check your email for ', + style: TextStyle( + color: Colors.black, + decoration: TextDecoration.none, + ), + ), + TextSpan( + recognizer: TapGestureRecognizer() + ..onTap = () { + print('object'); + }, + text: 'verification', + style: const TextStyle( + color: Colors.blue, + ), + ), + const TextSpan( + text: ' to \ncontinue registration.', + style: TextStyle( + color: Colors.black, + decoration: TextDecoration.none, + ), + ), + ]), + ), ), ], ); } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + builder: (context, child) { + return Consumer( + builder: (context, provider, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + !provider.isEmailVerify + ? const TextCaption(title: 'Enter your e-mail') + : const TextCaption(title: 'Check your e-mail '), + !provider.isEmailVerify + ? TextFormView( + name: 'E-mail Address', + hintText: 'Input e-mail address', + onTap: () { + provider.submitEmail(); + }, + ) + : _emailVerify(), + ], + ); + }); + }); + } } 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 bf33455..1b8b389 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 @@ -1,16 +1,56 @@ +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/application/theme/color_palette.dart'; +import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class SubmitPersonalData extends StatelessWidget { const SubmitPersonalData({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextCaption(title: 'Your personal details'), - ], - ); + List listForm = [ + ItemSelectForm('key1', 'text'), + ItemSelectForm('key2', 'text'), + ItemSelectForm('key3', 'text'), + ItemSelectForm('key4', 'text'), + ItemSelectForm('key5', 'text'), + ]; + return ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + builder: (context, child) { + return Consumer( + builder: (context, provider, child) { + return SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const TextCaption(title: 'Your personal details'), + SelectFormView( + name: 'Occupation', + hintText: 'Select occupation ', + bottomSheetTitle: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text('Occupation'), + IconButton( + onPressed: () => Navigator.pop(context), + icon: const Icon( + Icons.clear, + size: 20, + color: ColorPalette.greyBase, + )), + ], + ), + listItem: listForm, + onSelect: (value) {}, + ), + ], + ), + ); + }); + }); } }