From 9ba8b791123ee6ca0b6b337dc1ba30f8d720469c Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Mon, 19 Feb 2024 18:24:20 +0700 Subject: [PATCH] fix: registration step --- .../select_form/select_form_view.dart | 11 +- .../component/text_form/text_form_view.dart | 4 +- .../view/registration_success_view.dart | 6 +- .../data_bank/submit_bank_account.dart | 32 ++-- .../risk_profile/results_view.dart | 6 +- .../submission_data/submission_parent.dart | 75 ++------- .../submission_data/submit_data_id_card.dart | 148 ++++++++++-------- .../view/submission_data/submit_email.dart | 16 ++ .../submission_data/submit_personal_data.dart | 18 +++ .../submit_signature/initial_signature.dart | 38 +++-- .../terms_and_condition_view.dart | 1 + .../viewmodel/submission_data_viewmodel.dart | 19 +++ lib/main.dart | 23 +-- 13 files changed, 243 insertions(+), 154 deletions(-) diff --git a/lib/application/component/select_form/select_form_view.dart b/lib/application/component/select_form/select_form_view.dart index 6e6f0f2..87c9854 100644 --- a/lib/application/component/select_form/select_form_view.dart +++ b/lib/application/component/select_form/select_form_view.dart @@ -60,6 +60,12 @@ class SelectFormView extends StatelessWidget { ) { return Container( height: SizeConfig.height * .45, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.vertical( + top: Radius.circular(20), + ), + ), padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -94,7 +100,7 @@ class SelectFormView extends StatelessWidget { bool selected = e.text == ctrl?.text; return Card( elevation: 0, - color: Colors.transparent, + color: Colors.white, shape: RoundedRectangleBorder( side: BorderSide( color: selected @@ -108,7 +114,8 @@ class SelectFormView extends StatelessWidget { title: Text( e.text, style: TextStyle( - fontSize: 14, + fontSize: 16, + fontWeight: FontWeight.w500, color: selected ? ColorPalette.primary : ColorPalette.slate500), diff --git a/lib/application/component/text_form/text_form_view.dart b/lib/application/component/text_form/text_form_view.dart index 6bf6db6..2c0eb1e 100644 --- a/lib/application/component/text_form/text_form_view.dart +++ b/lib/application/component/text_form/text_form_view.dart @@ -137,9 +137,9 @@ class TextFormView extends StatelessWidget { onTap: onTap, onEditingComplete: onSubmit, style: TextStyle( - fontWeight: FontWeight.bold, + fontWeight: FontWeight.w500, fontSize: 14, - color: fontColorDisabled ?? Colors.black, + color: fontColorDisabled ?? ColorPalette.slate500, ), readOnly: readOnly, validator: validator, diff --git a/lib/features/auth/registration/view/registration_success_view.dart b/lib/features/auth/registration/view/registration_success_view.dart index ae97d6d..302608e 100644 --- a/lib/features/auth/registration/view/registration_success_view.dart +++ b/lib/features/auth/registration/view/registration_success_view.dart @@ -29,7 +29,11 @@ class RegistrationSuccessView extends StatelessWidget { name: 'Next', marginVertical: 0.0, onPressed: () { - routePush(context, page: const BottomNavigationView()); + routePush( + context, + page: const BottomNavigationView(), + routeType: RouteType.pushReplace, + ); }, ) ], diff --git a/lib/features/auth/registration/view/submission_data/data_bank/submit_bank_account.dart b/lib/features/auth/registration/view/submission_data/data_bank/submit_bank_account.dart index 384cd43..d625392 100644 --- a/lib/features/auth/registration/view/submission_data/data_bank/submit_bank_account.dart +++ b/lib/features/auth/registration/view/submission_data/data_bank/submit_bank_account.dart @@ -1,27 +1,24 @@ import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/button/button_view.dart'; import 'package:cims_apps/application/component/image/image_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/application/component/text_form/text_form_view.dart'; import 'package:cims_apps/application/theme/color_palette.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/data_bank/guide_screen.dart'; import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'confirm_bank_account.dart'; + class SubmitBankAccount extends StatelessWidget { const SubmitBankAccount({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - List listForm = [ - ItemSelectForm('key1', 'BCA'), - ItemSelectForm('key2', 'BRI'), - ItemSelectForm('key3', 'BNI'), - ItemSelectForm('key4', 'BANK MANDIRI'), - ItemSelectForm('key5', 'CIMB NIAGA'), - ]; return MultiProvider( providers: [ ChangeNotifierProvider( @@ -38,11 +35,14 @@ class SubmitBankAccount extends StatelessWidget { const TextCaption(title: 'Input your bank account data'), SelectFormView( name: 'Bank Name', - listItem: listForm, + hintText: 'Select Bank', + listItem: provider.listBank, + ctrl: provider.ctrlBankName, onSelect: (value) {}, ), TextFormView( name: 'Account Number', + hintText: 'Input Account Number', trailingTitleWidget: SizedBox( width: 24, child: GestureDetector( @@ -53,13 +53,27 @@ class SubmitBankAccount extends StatelessWidget { ), ), ), - TextFormView(name: 'Account Owner Name'), + TextFormView( + name: 'Account Owner Name', + hintText: 'Input Account Name', + ), const Text( "Make sure the account you use is in your name, not someone else's", style: TextStyle( color: ColorPalette.slate400, ), ), + SizedBox(height: SizeConfig.height * .08), + ButtonView( + name: 'Next', + onPressed: () { + provider.next(context).then((value) { + if (value) { + routePush(context, page: const ConfirmBankAccount()); + } + }); + }, + ) ], ); }), diff --git a/lib/features/auth/registration/view/submission_data/risk_profile/results_view.dart b/lib/features/auth/registration/view/submission_data/risk_profile/results_view.dart index 674913c..80d7595 100644 --- a/lib/features/auth/registration/view/submission_data/risk_profile/results_view.dart +++ b/lib/features/auth/registration/view/submission_data/risk_profile/results_view.dart @@ -162,7 +162,11 @@ class ResultsView extends StatelessWidget { ButtonView( name: 'Confirm', onPressed: () { - routePush(context, page: const TermsAndConditionView()); + routePush( + context, + page: const TermsAndConditionView(), + routeType: RouteType.pushReplace, + ); }, marginVertical: 0, textSize: 16, 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 44ef918..310c4a3 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,7 @@ -import 'package:cims_apps/application/component/button/back_button_view.dart'; -import 'package:cims_apps/application/component/button/button_view.dart'; +import 'package:cims_apps/application/component/custom_app_bar/custom_app_bar.dart'; import 'package:cims_apps/application/theme/color_palette.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/data_bank/confirm_bank_account.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/data_bank/submit_bank_account.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/risk_profile/risk_profile_view.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submit_data_id_card.dart'; @@ -12,7 +10,6 @@ import 'package:cims_apps/features/auth/registration/view/submission_data/submit import 'package:cims_apps/features/auth/registration/view/submission_data/submit_personal_data.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submit_photo_selfie.dart'; import 'package:cims_apps/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart'; -import 'package:cims_apps/features/auth/registration/view/submission_data/submit_signature/submit_signature.dart'; import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:cims_apps/features/bottom_navigation_view.dart'; import 'package:flutter/material.dart'; @@ -64,21 +61,6 @@ class _SubmissionParentState extends State { } } - _contentPush(int index) { - switch (index) { - case 6: - routePush(context, page: const ConfirmBankAccount()); - case 7: - routePush(context, page: const SubmitSignature()); - // case 8: - // return const RiskProfileView(); - // case 9: - // return Container( - // child: Text("Step 9"), - // ); - } - } - @override Widget build(BuildContext context) { return ChangeNotifierProvider( @@ -94,24 +76,8 @@ class _SubmissionParentState extends State { child: Consumer( builder: (context, provider, child) { return Scaffold( - appBar: AppBar( - toolbarHeight: 70, - backgroundColor: Colors.white, - surfaceTintColor: Colors.white, - automaticallyImplyLeading: false, - title: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const BackButtonView(), - const Text('Registration'), - SizedBox( - width: SizeConfig.width * 0.1, - ) - ], - ), - shape: const RoundedRectangleBorder( - side: BorderSide(color: ColorPalette.slate200)), - ), + appBar: CustomAppBar( + height: SizeConfig.height * .1, title: 'Registration'), body: Stack( children: [ Column( @@ -123,13 +89,19 @@ class _SubmissionParentState extends State { horizontal: 16.0, vertical: 16.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: List.generate( - provider.stepAmount, - (index) => _stepItem( - isCurrentStep: - provider.getCurrentStep == index + 1, - ), - ), + children: + List.generate(provider.stepAmount, (index) { + // print('indd $index'); + // print( + // 'getCurrentStep ${provider.getCurrentStep}'); + return _stepItem( + isCurrentStep: provider.getCurrentStep == + index + 1 || + provider.getCurrentStep - 1 == index + 1, + // isDone: + // index + 1 != provider.getCurrentStep + 1, + ); + }), ), ), Expanded( @@ -139,21 +111,6 @@ class _SubmissionParentState extends State { child: _content(provider.getCurrentStep), ), ), - provider.getCurrentStep == 3 || - provider.getCurrentStep == 4 || - provider.getCurrentStep == 8 - ? const SizedBox() - : Align( - alignment: Alignment.bottomCenter, - child: ButtonView( - name: 'Next', - marginVertical: 16.0, - onPressed: () { - _contentPush(provider.getCurrentStep); - provider.nextSubmission(context); - }, - ), - ) ], ), ], 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 b7364ba..2b42515 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 @@ -4,8 +4,12 @@ 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/application/theme/color_palette.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'; +import 'package:provider/provider.dart'; class SubmitDataIdCard extends StatelessWidget { const SubmitDataIdCard({Key? key}) : super(key: key); @@ -151,68 +155,90 @@ class SubmitDataIdCard extends StatelessWidget { ); } - return SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const TextCaption(title: 'Check your ID card data for accuracy'), - TextFormView(name: 'NIK'), - TextFormView(name: 'Full Name'), - TextFormView( - name: 'Birth Date', - suffixIcon: const Icon( - Icons.calendar_today_rounded, - color: ColorPalette.slate400, - ), - ), - photoDocument(), - 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, - ), - ), - 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, - ), - ) - ], - ), + return MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), ) ], - ), - ); + builder: (context, child) { + 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'), + TextFormView(name: 'Full Name'), + TextFormView( + name: 'Birth Date', + suffixIcon: const Icon( + Icons.calendar_today_rounded, + color: ColorPalette.slate400, + ), + ), + photoDocument(), + 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, + ), + ), + 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, + ), + ) + ], + ), + ), + ButtonView( + name: 'Next', + onPressed: () async { + await provider.next(context).then((value) { + if (value) { + routePush(context, page: const SubmissionParent()); + } + }); + }, + ) + ], + ); + }), + ); + }); } } 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 a1c6de1..f4ff54f 100644 --- a/lib/features/auth/registration/view/submission_data/submit_email.dart +++ b/lib/features/auth/registration/view/submission_data/submit_email.dart @@ -1,7 +1,11 @@ import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/button/button_view.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/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/gestures.dart'; import 'package:flutter/material.dart'; @@ -60,6 +64,7 @@ class SubmitEmail extends StatelessWidget { builder: (context, provider, child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ !provider.isEmailVerify ? const TextCaption(title: 'Enter your e-mail') @@ -73,6 +78,17 @@ class SubmitEmail extends StatelessWidget { }, ) : _emailVerify(), + SizedBox(height: SizeConfig.height * .42), + ButtonView( + name: 'Next', + onPressed: () async { + await provider.next(context).then((value) { + if (value) { + routePush(context, page: const SubmissionParent()); + } + }); + }, + ) ], ); }); 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 583d4e4..65e8607 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,5 +1,8 @@ +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/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'; import 'package:provider/provider.dart'; @@ -19,6 +22,7 @@ class SubmitPersonalData extends StatelessWidget { key: provider.formKeyPersonalData, child: Column( crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const TextCaption(title: 'Your personal details'), SelectFormView( @@ -49,6 +53,20 @@ class SubmitPersonalData extends StatelessWidget { listItem: provider.listSourceFund, onSelect: (value) {}, ), + Align( + alignment: Alignment.bottomCenter, + child: ButtonView( + name: 'Next', + onPressed: () async { + await provider.next(context).then((value) { + if (value) { + routePush(context, + page: const SubmissionParent()); + } + }); + }, + ), + ) ], ), ), diff --git a/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart b/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart index 50214e2..1811e35 100644 --- a/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart +++ b/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart @@ -1,7 +1,11 @@ import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/button/button_view.dart'; import 'package:cims_apps/application/component/image/image_view.dart'; import 'package:cims_apps/application/component/list_tile/list_tile_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/submit_signature/submit_signature.dart'; import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -18,16 +22,30 @@ class InitialSignature extends StatelessWidget { ) ], builder: (context, child) { - return const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextCaption(title: 'Draw your digital sign'), - ImageView(image: PathAssets.frameSignature), - ListTileView( - title: - 'Make sure the sign you draw is match with your ID Card'), - ], - ); + return Consumer( + builder: (context, provider, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const TextCaption(title: 'Draw your digital sign'), + const ImageView(image: PathAssets.frameSignature), + const ListTileView( + title: + 'Make sure the sign you draw is match with your ID Card'), + SizedBox(height: SizeConfig.height * .07), + ButtonView( + name: 'Next', + onPressed: () { + provider.next(context).then((value) { + if (value) { + routePush(context, page: const SubmitSignature()); + } + }); + }, + ) + ], + ); + }); }); } } diff --git a/lib/features/auth/registration/view/submission_data/terms_and_condition/terms_and_condition_view.dart b/lib/features/auth/registration/view/submission_data/terms_and_condition/terms_and_condition_view.dart index abe5406..dad3e2f 100644 --- a/lib/features/auth/registration/view/submission_data/terms_and_condition/terms_and_condition_view.dart +++ b/lib/features/auth/registration/view/submission_data/terms_and_condition/terms_and_condition_view.dart @@ -90,6 +90,7 @@ class TermsAndConditionView extends StatelessWidget { onPressed: () { provider.nextSubmission(context); routePush(context, + routeType: RouteType.pushReplace, page: SetPinView( currentPin: '', submitPin: (context, pin) {}, diff --git a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart index 51e70de..1835e0d 100644 --- a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart +++ b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart @@ -13,6 +13,8 @@ class SubmissionDataViewModel extends ChangeNotifier { TextEditingController ctrlIncome = TextEditingController(); TextEditingController ctrlMarital = TextEditingController(); TextEditingController ctrlSourceFund = TextEditingController(); + TextEditingController ctrlBankName = TextEditingController(); + int step = 1; List listOccupation = [ ItemSelectForm('key1', 'Student'), @@ -35,6 +37,14 @@ class SubmissionDataViewModel extends ChangeNotifier { ItemSelectForm('key3', 'Saving interest'), ]; + List listBank = [ + ItemSelectForm('key1', 'BCA'), + ItemSelectForm('key2', 'BRI'), + ItemSelectForm('key3', 'BNI'), + ItemSelectForm('key4', 'BANK MANDIRI'), + ItemSelectForm('key5', 'CIMB NIAGA'), + ]; + Future> initCamera() async { final cameras = await availableCameras(); final camerasDesc = cameras; @@ -64,4 +74,13 @@ class SubmissionDataViewModel extends ChangeNotifier { notifyListeners(); } + + Future next(BuildContext context) async { + if (getCurrentStep < stepAmount) { + _currentStep++; + notifyListeners(); + return true; + } + return false; + } } diff --git a/lib/main.dart b/lib/main.dart index 4d24d24..c94e8a0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -34,18 +34,13 @@ class MyApp extends StatelessWidget { fontFamily: 'Manrope', scaffoldBackgroundColor: Colors.white, textTheme: const TextTheme( - headlineSmall: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: ColorPalette.slate800, - ), - headlineLarge: TextStyle( - fontSize: 28, - fontWeight: FontWeight.bold, + displaySmall: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, color: ColorPalette.slate800, ), displayMedium: TextStyle( - fontSize: 14, + fontSize: 16, fontWeight: FontWeight.w600, color: ColorPalette.slate800, ), @@ -64,6 +59,16 @@ class MyApp extends StatelessWidget { fontWeight: FontWeight.bold, color: ColorPalette.slate500, ), + headlineSmall: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800, + ), + headlineLarge: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800, + ), ), colorScheme: const ColorScheme.light().copyWith( primary: const Color(0xff2563EB),