bayu/dev #12

Merged
nugrohob825 merged 6 commits from bayu/dev into dev 2024-02-19 19:42:41 +07:00
13 changed files with 243 additions and 154 deletions
Showing only changes of commit 9ba8b79112 - Show all commits

View File

@ -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),

View File

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

View File

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

View File

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

View File

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

View File

@ -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<SubmissionParent> {
}
}
_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<SubmissionParent> {
child: Consumer<SubmissionDataViewModel>(
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<SubmissionParent> {
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<SubmissionParent> {
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);
},
),
)
],
),
],

View File

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

View File

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

View File

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

View File

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

View File

@ -90,6 +90,7 @@ class TermsAndConditionView extends StatelessWidget {
onPressed: () {
provider.nextSubmission(context);
routePush(context,
routeType: RouteType.pushReplace,
page: SetPinView(
currentPin: '',
submitPin: (context, pin) {},

View File

@ -13,6 +13,8 @@ class SubmissionDataViewModel extends ChangeNotifier {
TextEditingController ctrlIncome = TextEditingController();
TextEditingController ctrlMarital = TextEditingController();
TextEditingController ctrlSourceFund = TextEditingController();
TextEditingController ctrlBankName = TextEditingController();
int step = 1;
List<ItemSelectForm> listOccupation = [
ItemSelectForm('key1', 'Student'),
@ -35,6 +37,14 @@ class SubmissionDataViewModel extends ChangeNotifier {
ItemSelectForm('key3', 'Saving interest'),
];
List<ItemSelectForm> listBank = [
ItemSelectForm('key1', 'BCA'),
ItemSelectForm('key2', 'BRI'),
ItemSelectForm('key3', 'BNI'),
ItemSelectForm('key4', 'BANK MANDIRI'),
ItemSelectForm('key5', 'CIMB NIAGA'),
];
Future<List<CameraDescription>> initCamera() async {
final cameras = await availableCameras();
final camerasDesc = cameras;
@ -64,4 +74,13 @@ class SubmissionDataViewModel extends ChangeNotifier {
notifyListeners();
}
Future<bool> next(BuildContext context) async {
if (getCurrentStep < stepAmount) {
_currentStep++;
notifyListeners();
return true;
}
return false;
}
}

View File

@ -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),