fix: select data bank

This commit is contained in:
Dian Bayu Nugroho 2024-02-25 23:43:48 +07:00
parent ae4f9c25c4
commit db1280b272
5 changed files with 178 additions and 13 deletions

View File

@ -138,7 +138,7 @@ class SelectFormView extends StatelessWidget {
onTap: () { onTap: () {
stateSetter(() { stateSetter(() {
ctrl?.text = e.text; ctrl?.text = e.text;
onSelect(e.key); onSelect(e.text);
}); });
}, },
), ),
@ -152,7 +152,9 @@ class SelectFormView extends StatelessWidget {
name: 'Select', name: 'Select',
marginVertical: 4.0, marginVertical: 4.0,
onPressed: () { onPressed: () {
Navigator.pop(context); if (ctrl!.text.isNotEmpty) {
Navigator.pop(context);
}
}, },
) )
], ],

View File

@ -31,10 +31,11 @@ class RegistrationView extends StatelessWidget {
), ),
), ),
builder: (BuildContext context) { builder: (BuildContext context) {
var flutterView = View.of(context);
return Padding( return Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
top: MediaQueryData.fromView( top: MediaQueryData.fromView(
WidgetsBinding.instance.window, flutterView,
).padding.top, ).padding.top,
), ),
child: const OtpView( child: const OtpView(

View File

@ -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<String> 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<SubmissionDataViewModel>(
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);
},
),
],
);
}),
),
);
});
}
}

View File

@ -1,13 +1,13 @@
import 'package:cims_apps/application/assets/path_assets.dart'; 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/button/button_view.dart';
import 'package:cims_apps/application/component/image/image_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_caption/text_caption.dart';
import 'package:cims_apps/application/component/text_form/text_form_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/application/theme/color_palette.dart';
import 'package:cims_apps/core/route/route.dart'; import 'package:cims_apps/core/route/route.dart';
import 'package:cims_apps/core/utils/size_config.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/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:cims_apps/features/auth/registration/viewmodel/submission_data_viewmodel.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -19,6 +19,40 @@ class SubmitBankAccount extends StatelessWidget {
@override @override
Widget build(BuildContext context) { 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( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider( ChangeNotifierProvider(
@ -34,12 +68,17 @@ class SubmitBankAccount extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const TextCaption(title: 'Input your bank account data'), const TextCaption(title: 'Input your bank account data'),
SelectFormView( TextFormView(
name: 'Bank Name', name: 'Bank Name',
hintText: 'Select Bank', hintText: 'Select bank',
listItem: provider.listBank, readOnly: true,
ctrl: provider.ctrlBankName, ctrl: provider.ctrlBankName,
onSelect: (value) {}, onTap: () {
showSearchBank(provider.ctrlBankName);
},
suffixIcon: const Icon(
Icons.keyboard_arrow_down_outlined,
),
), ),
TextFormView( TextFormView(
name: 'Account Number', name: 'Account Number',

View File

@ -19,8 +19,11 @@ class SubmissionDataViewModel extends ChangeNotifier {
TextEditingController ctrlMarital = TextEditingController(); TextEditingController ctrlMarital = TextEditingController();
TextEditingController ctrlSourceFund = TextEditingController(); TextEditingController ctrlSourceFund = TextEditingController();
TextEditingController ctrlBankName = TextEditingController(); TextEditingController ctrlBankName = TextEditingController();
TextEditingController ctrlBankNameSearch = TextEditingController();
TextEditingController ctrlBirthDate = TextEditingController(); TextEditingController ctrlBirthDate = TextEditingController();
int step = 1; int step = 1;
String? idx;
String valueBank = '';
List<ItemSelectForm> listOccupation = [ List<ItemSelectForm> listOccupation = [
ItemSelectForm('key1', 'Student'), ItemSelectForm('key1', 'Student'),
@ -44,11 +47,13 @@ class SubmissionDataViewModel extends ChangeNotifier {
]; ];
List<ItemSelectForm> listBank = [ List<ItemSelectForm> listBank = [
ItemSelectForm('key1', 'BCA'), ItemSelectForm('0', 'BCA'),
ItemSelectForm('key2', 'BRI'), ItemSelectForm('1', 'BRI'),
ItemSelectForm('key3', 'BNI'), ItemSelectForm('2', 'BNI'),
ItemSelectForm('key4', 'BANK MANDIRI'), ItemSelectForm('3', 'BANK MANDIRI'),
ItemSelectForm('key5', 'CIMB NIAGA'), ItemSelectForm('4', 'CIMB NIAGA'),
ItemSelectForm('5', 'PERMATA'),
ItemSelectForm('6', 'BANK JATENG'),
]; ];
List<ItemSelectForm> listImg = [ List<ItemSelectForm> listImg = [
@ -105,4 +110,14 @@ class SubmissionDataViewModel extends ChangeNotifier {
} }
notifyListeners(); notifyListeners();
} }
changeBank(String key) {
idx = key;
notifyListeners();
}
selectBank(String value) {
valueBank = value;
notifyListeners();
}
} }