Compare commits

..

7 Commits

7 changed files with 226 additions and 56 deletions

View File

@ -47,6 +47,7 @@ class SelectFormView extends StatelessWidget {
bottomSheet() {
showModalBottomSheet<void>(
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,
@ -134,7 +138,7 @@ class SelectFormView extends StatelessWidget {
onTap: () {
stateSetter(() {
ctrl?.text = e.text;
onSelect(e.key);
onSelect(e.text);
});
},
),
@ -148,7 +152,9 @@ class SelectFormView extends StatelessWidget {
name: 'Select',
marginVertical: 4.0,
onPressed: () {
if (ctrl!.text.isNotEmpty) {
Navigator.pop(context);
}
},
)
],

View File

@ -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(

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/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',

View File

@ -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,15 +61,11 @@ class TermsAndConditionView extends StatelessWidget {
],
),
);
})
],
),
),
bottomNavigationBar: Consumer<SubmissionDataViewModel>(
}),
Consumer<SubmissionDataViewModel>(
builder: (context, provider, child) {
return Container(
height: 84,
padding: const EdgeInsets.symmetric(horizontal: 24),
return Padding(
padding: const EdgeInsets.only(top: 24.0),
child: Row(
children: [
Expanded(
@ -77,7 +74,8 @@ class TermsAndConditionView extends StatelessWidget {
onPressed: () {
Navigator.pop(context);
},
marginVertical: 16,
height: SizeConfig.height * .06,
marginVertical: 0,
backgroundColor: ColorPalette.white,
textColor: ColorPalette.primary,
isOutlined: true,
@ -96,11 +94,15 @@ class TermsAndConditionView extends StatelessWidget {
submitPin: (context, pin) {},
));
},
marginVertical: 16))
height: SizeConfig.height * .06,
marginVertical: 0))
],
),
);
}),
],
),
),
);
});
}

View File

@ -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<ItemSelectForm> listOccupation = [
ItemSelectForm('key1', 'Student'),
@ -44,11 +47,13 @@ class SubmissionDataViewModel extends ChangeNotifier {
];
List<ItemSelectForm> 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<ItemSelectForm> listImg = [
@ -105,4 +110,14 @@ class SubmissionDataViewModel extends ChangeNotifier {
}
notifyListeners();
}
changeBank(String key) {
idx = key;
notifyListeners();
}
selectBank(String value) {
valueBank = value;
notifyListeners();
}
}

View File

@ -44,7 +44,6 @@ class DashboardPublicView extends StatelessWidget {
return Scaffold(
body: SingleChildScrollView(
padding: const EdgeInsets.only(
top: 36.0,
bottom: 8.0,
left: 24.0,
right: 24.0,
@ -55,11 +54,11 @@ class DashboardPublicView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(height: SizeConfig.height * .06),
ImageView(
image: PathAssets.icon1,
width: SizeConfig.width * .35,
),
SizedBox(height: SizeConfig.height * .03),
Align(
alignment: Alignment.center,
heightFactor: 1,
@ -68,7 +67,7 @@ class DashboardPublicView extends StatelessWidget {
alignment: Alignment.center,
child: ImageView(
image: PathAssets.imgDashboard,
width: SizeConfig.width * .7,
width: SizeConfig.width * .8,
),
),
Row(
@ -106,7 +105,7 @@ class DashboardPublicView extends StatelessWidget {
provider.loginGoogle(context);
},
),
SizedBox(height: SizeConfig.height * .07),
SizedBox(height: SizeConfig.height * .1),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [