Compare commits

...

6 Commits

7 changed files with 226 additions and 56 deletions

View File

@ -47,6 +47,7 @@ class SelectFormView extends StatelessWidget {
bottomSheet() { bottomSheet() {
showModalBottomSheet<void>( showModalBottomSheet<void>(
context: context, context: context,
isDismissible: false,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: _borderRadius, topLeft: _borderRadius,
@ -82,7 +83,10 @@ class SelectFormView extends StatelessWidget {
), ),
), ),
IconButton( IconButton(
onPressed: () => Navigator.pop(context), onPressed: () {
ctrl?.clear();
Navigator.pop(context);
},
icon: const Icon( icon: const Icon(
Icons.clear, Icons.clear,
size: 26, size: 26,
@ -134,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);
}); });
}, },
), ),
@ -148,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

@ -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/component/set_pin_view/set_pin_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/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';
@ -60,47 +61,48 @@ class TermsAndConditionView extends StatelessWidget {
], ],
), ),
); );
}) }),
Consumer<SubmissionDataViewModel>(
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<SubmissionDataViewModel>(
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))
],
),
);
}),
); );
}); });
} }

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();
}
} }

View File

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