From 506480d8125d7dd777d4bf0d09c7e8ccb46959fc Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Thu, 22 Feb 2024 15:56:09 +0700 Subject: [PATCH 1/4] fix: button terms and condition --- .../terms_and_condition_view.dart | 78 ++++++++++--------- 1 file changed, 40 insertions(+), 38 deletions(-) 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 dad3e2f..513341c 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 @@ -3,6 +3,7 @@ import 'package:cims_apps/application/component/button/button_view.dart'; import 'package:cims_apps/application/component/set_pin_view/set_pin_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/viewmodel/submission_data_viewmodel.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -60,47 +61,48 @@ class TermsAndConditionView extends StatelessWidget { ], ), ); - }) + }), + Consumer( + builder: (context, provider, child) { + return Padding( + padding: const EdgeInsets.only(top: 24.0), + child: Row( + children: [ + Expanded( + child: ButtonView( + name: 'Decline', + onPressed: () { + Navigator.pop(context); + }, + height: SizeConfig.height * .06, + marginVertical: 0, + backgroundColor: ColorPalette.white, + textColor: ColorPalette.primary, + isOutlined: true, + borderColor: ColorPalette.primary, + )), + const SizedBox(width: 16), + Expanded( + child: ButtonView( + name: 'Accept', + onPressed: () { + provider.nextSubmission(context); + routePush(context, + routeType: RouteType.pushReplace, + page: SetPinView( + currentPin: '', + submitPin: (context, pin) {}, + )); + }, + height: SizeConfig.height * .06, + marginVertical: 0)) + ], + ), + ); + }), ], ), ), - bottomNavigationBar: Consumer( - builder: (context, provider, child) { - return Container( - height: 84, - padding: const EdgeInsets.symmetric(horizontal: 24), - child: Row( - children: [ - Expanded( - child: ButtonView( - name: 'Decline', - onPressed: () { - Navigator.pop(context); - }, - marginVertical: 16, - backgroundColor: ColorPalette.white, - textColor: ColorPalette.primary, - isOutlined: true, - borderColor: ColorPalette.primary, - )), - const SizedBox(width: 16), - Expanded( - child: ButtonView( - name: 'Accept', - onPressed: () { - provider.nextSubmission(context); - routePush(context, - routeType: RouteType.pushReplace, - page: SetPinView( - currentPin: '', - submitPin: (context, pin) {}, - )); - }, - marginVertical: 16)) - ], - ), - ); - }), ); }); } -- 2.45.2 From ae4f9c25c4b02bf85b60112ec3bef1821fb7280b Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Sun, 25 Feb 2024 19:58:41 +0700 Subject: [PATCH 2/4] fix: component select form --- lib/application/component/select_form/select_form_view.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/application/component/select_form/select_form_view.dart b/lib/application/component/select_form/select_form_view.dart index 0eb826b..6ca2fa5 100644 --- a/lib/application/component/select_form/select_form_view.dart +++ b/lib/application/component/select_form/select_form_view.dart @@ -47,6 +47,7 @@ class SelectFormView extends StatelessWidget { bottomSheet() { showModalBottomSheet( context: context, + isDismissible: false, shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: _borderRadius, @@ -82,7 +83,10 @@ class SelectFormView extends StatelessWidget { ), ), IconButton( - onPressed: () => Navigator.pop(context), + onPressed: () { + ctrl?.clear(); + Navigator.pop(context); + }, icon: const Icon( Icons.clear, size: 26, -- 2.45.2 From db1280b272bae5df8d88fa9819135596790d1585 Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Sun, 25 Feb 2024 23:43:48 +0700 Subject: [PATCH 3/4] fix: select data bank --- .../select_form/select_form_view.dart | 6 +- .../registration/view/registration_view.dart | 3 +- .../data_bank/list_bank_view.dart | 108 ++++++++++++++++++ .../data_bank/submit_bank_account.dart | 49 +++++++- .../viewmodel/submission_data_viewmodel.dart | 25 +++- 5 files changed, 178 insertions(+), 13 deletions(-) create mode 100644 lib/features/auth/registration/view/submission_data/data_bank/list_bank_view.dart diff --git a/lib/application/component/select_form/select_form_view.dart b/lib/application/component/select_form/select_form_view.dart index 6ca2fa5..59f1d99 100644 --- a/lib/application/component/select_form/select_form_view.dart +++ b/lib/application/component/select_form/select_form_view.dart @@ -138,7 +138,7 @@ class SelectFormView extends StatelessWidget { onTap: () { stateSetter(() { ctrl?.text = e.text; - onSelect(e.key); + onSelect(e.text); }); }, ), @@ -152,7 +152,9 @@ class SelectFormView extends StatelessWidget { name: 'Select', marginVertical: 4.0, onPressed: () { - Navigator.pop(context); + if (ctrl!.text.isNotEmpty) { + Navigator.pop(context); + } }, ) ], diff --git a/lib/features/auth/registration/view/registration_view.dart b/lib/features/auth/registration/view/registration_view.dart index 4d7b29c..77f2fa0 100644 --- a/lib/features/auth/registration/view/registration_view.dart +++ b/lib/features/auth/registration/view/registration_view.dart @@ -31,10 +31,11 @@ class RegistrationView extends StatelessWidget { ), ), builder: (BuildContext context) { + var flutterView = View.of(context); return Padding( padding: EdgeInsets.only( top: MediaQueryData.fromView( - WidgetsBinding.instance.window, + flutterView, ).padding.top, ), child: const OtpView( diff --git a/lib/features/auth/registration/view/submission_data/data_bank/list_bank_view.dart b/lib/features/auth/registration/view/submission_data/data_bank/list_bank_view.dart new file mode 100644 index 0000000..9d9c7a2 --- /dev/null +++ b/lib/features/auth/registration/view/submission_data/data_bank/list_bank_view.dart @@ -0,0 +1,108 @@ +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/custom_app_bar/custom_app_bar.dart'; +import 'package:cims_apps/application/component/image/image_view.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/utils/size_config.dart'; +import 'package:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class ListBankView extends StatelessWidget { + final ValueChanged onSelect; + const ListBankView({Key? key, required this.onSelect}) : super(key: key); + + @override + Widget build(BuildContext context) { + var textTheme = Theme.of(context).textTheme; + + return ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + builder: (context, child) { + return Scaffold( + appBar: CustomAppBar( + height: SizeConfig.height * .1, title: 'Select Bank'), + body: Container( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Consumer( + builder: (context, provider, child) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ImageView( + image: PathAssets.imgGuideBank, + width: SizeConfig.width * .35, + ), + Expanded( + child: Text( + 'Make sure the bank you choose is a bank account in your own name ', + style: textTheme.bodyLarge, + ), + ) + ], + ), + TextFormView( + name: '', + hintText: 'Search bank', + ctrl: provider.ctrlBankNameSearch, + contentPadding: const EdgeInsets.symmetric(vertical: 0), + prefixIcon: const Icon( + Icons.search, + color: ColorPalette.slate500, + ), + ), + Expanded( + child: SingleChildScrollView( + child: Column( + children: provider.listBank.asMap().entries.map((e) { + bool selectedBank = + e.key.toString() == provider.idx; + return Card( + elevation: 0, + color: selectedBank + ? ColorPalette.blue50 + : Colors.white, + shape: const RoundedRectangleBorder( + borderRadius: + BorderRadius.all(Radius.circular(12)), + ), + child: ListTile( + title: Text( + e.value.text, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: selectedBank + ? ColorPalette.primary + : ColorPalette.slate500, + ), + ), + onTap: () { + provider.changeBank(e.key.toString()); + provider.selectBank(e.value.text); + }, + ), + ); + }).toList(), + ), + ), + ), + ButtonView( + name: 'Select', + marginVertical: 8.0, + onPressed: () { + onSelect(provider.valueBank); + Navigator.pop(context); + }, + ), + ], + ); + }), + ), + ); + }); + } +} 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 fb7197a..7c26f43 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,13 +1,13 @@ 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/view/submission_data/data_bank/list_bank_view.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 +19,40 @@ class SubmitBankAccount extends StatelessWidget { @override Widget build(BuildContext context) { + showSearchBank(TextEditingController valueCtrl) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + enableDrag: false, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical( + top: Radius.zero, + ), + ), + builder: (BuildContext context) { + return StatefulBuilder( + builder: (context, setState) { + var flutterView = View.of(context); + return Padding( + padding: EdgeInsets.only( + top: MediaQueryData.fromView( + flutterView, + ).padding.top, + ), + child: ListBankView( + onSelect: (value) { + setState(() { + valueCtrl.text = value; + }); + }, + ), + ); + }, + ); + }, + ); + } + return MultiProvider( providers: [ ChangeNotifierProvider( @@ -34,12 +68,17 @@ class SubmitBankAccount extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ const TextCaption(title: 'Input your bank account data'), - SelectFormView( + TextFormView( name: 'Bank Name', - hintText: 'Select Bank', - listItem: provider.listBank, + hintText: 'Select bank', + readOnly: true, ctrl: provider.ctrlBankName, - onSelect: (value) {}, + onTap: () { + showSearchBank(provider.ctrlBankName); + }, + suffixIcon: const Icon( + Icons.keyboard_arrow_down_outlined, + ), ), TextFormView( name: 'Account Number', diff --git a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart index bd63eed..bb23b50 100644 --- a/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart +++ b/lib/features/auth/registration/viewmodel/submission_data_viewmodel.dart @@ -19,8 +19,11 @@ class SubmissionDataViewModel extends ChangeNotifier { TextEditingController ctrlMarital = TextEditingController(); TextEditingController ctrlSourceFund = TextEditingController(); TextEditingController ctrlBankName = TextEditingController(); + TextEditingController ctrlBankNameSearch = TextEditingController(); TextEditingController ctrlBirthDate = TextEditingController(); int step = 1; + String? idx; + String valueBank = ''; List listOccupation = [ ItemSelectForm('key1', 'Student'), @@ -44,11 +47,13 @@ class SubmissionDataViewModel extends ChangeNotifier { ]; List listBank = [ - ItemSelectForm('key1', 'BCA'), - ItemSelectForm('key2', 'BRI'), - ItemSelectForm('key3', 'BNI'), - ItemSelectForm('key4', 'BANK MANDIRI'), - ItemSelectForm('key5', 'CIMB NIAGA'), + ItemSelectForm('0', 'BCA'), + ItemSelectForm('1', 'BRI'), + ItemSelectForm('2', 'BNI'), + ItemSelectForm('3', 'BANK MANDIRI'), + ItemSelectForm('4', 'CIMB NIAGA'), + ItemSelectForm('5', 'PERMATA'), + ItemSelectForm('6', 'BANK JATENG'), ]; List listImg = [ @@ -105,4 +110,14 @@ class SubmissionDataViewModel extends ChangeNotifier { } notifyListeners(); } + + changeBank(String key) { + idx = key; + notifyListeners(); + } + + selectBank(String value) { + valueBank = value; + notifyListeners(); + } } -- 2.45.2 From 6a43a3dcaf93a4b931fa4f5750c04c8f6b298167 Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Mon, 26 Feb 2024 00:17:58 +0700 Subject: [PATCH 4/4] fix: styling dashboard public --- .../dashboard_public/view/dashboard_public_view.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart b/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart index c0d7346..8562b44 100644 --- a/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart +++ b/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart @@ -44,7 +44,6 @@ class DashboardPublicView extends StatelessWidget { return Scaffold( body: SingleChildScrollView( padding: const EdgeInsets.only( - top: 32.0, bottom: 8.0, left: 24.0, right: 24.0, @@ -55,6 +54,7 @@ class DashboardPublicView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + SizedBox(height: SizeConfig.height * .06), ImageView( image: PathAssets.icon1, width: SizeConfig.width * .35, @@ -67,7 +67,7 @@ class DashboardPublicView extends StatelessWidget { alignment: Alignment.center, child: ImageView( image: PathAssets.imgDashboard, - width: SizeConfig.width * .7, + width: SizeConfig.width * .8, ), ), Row( @@ -105,7 +105,7 @@ class DashboardPublicView extends StatelessWidget { provider.loginGoogle(context); }, ), - SizedBox(height: SizeConfig.height * .15), + SizedBox(height: SizeConfig.height * .1), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ -- 2.45.2