diff --git a/assets/images/frame-signature.png b/assets/images/frame-signature.png new file mode 100644 index 0000000..c388f85 Binary files /dev/null and b/assets/images/frame-signature.png differ diff --git a/lib/application/assets/path_assets.dart b/lib/application/assets/path_assets.dart index 3ff16ff..01846f1 100644 --- a/lib/application/assets/path_assets.dart +++ b/lib/application/assets/path_assets.dart @@ -72,4 +72,5 @@ class PathAssets { static const String imgGuideBank = 'assets/images/img-guide-bank.png'; static const String imgGuide1 = 'assets/images/img-guide1.png'; static const String imgGuide2 = 'assets/images/img-guide2.png'; + static const String frameSignature = 'assets/images/frame-signature.png'; } 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 822a3ee..996ec12 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,12 +1,10 @@ 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/features/auth/registration/view/submission_data/data_bank/confirm_bank_account.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'; @@ -62,14 +60,14 @@ class SubmitBankAccount extends StatelessWidget { color: ColorPalette.slate400, ), ), - const Spacer(), - ButtonView( - name: 'Next', - onPressed: () { - provider.nextSubmission(context); - routePush(context, page: const ConfirmBankAccount()); - }, - ) + // const Spacer(), + // ButtonView( + // name: 'Next', + // onPressed: () { + // provider.nextSubmission(context); + // routePush(context, page: const ConfirmBankAccount()); + // }, + // ) ], ); }), diff --git a/lib/features/auth/registration/view/submission_data/submission_parent.dart b/lib/features/auth/registration/view/submission_data/submission_parent.dart index 8f53647..3546f64 100644 --- a/lib/features/auth/registration/view/submission_data/submission_parent.dart +++ b/lib/features/auth/registration/view/submission_data/submission_parent.dart @@ -3,6 +3,7 @@ import 'package:cims_apps/application/component/button/button_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/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'; @@ -10,6 +11,7 @@ import 'package:cims_apps/features/auth/registration/view/submission_data/submit import 'package:cims_apps/features/auth/registration/view/submission_data/submit_email.dart'; 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'; @@ -54,7 +56,7 @@ class _SubmissionParentState extends State { case 6: return const SubmitBankAccount(); case 7: - return const SubmitSignature(); + return const InitialSignature(); case 8: return const RiskProfileView(); case 9: @@ -64,6 +66,21 @@ class _SubmissionParentState extends State { } } + _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( @@ -125,8 +142,7 @@ class _SubmissionParentState extends State { ), ), provider.getCurrentStep == 3 || - provider.getCurrentStep == 4 || - provider.getCurrentStep == 6 + provider.getCurrentStep == 4 ? const SizedBox() : Align( alignment: Alignment.bottomCenter, @@ -134,6 +150,7 @@ class _SubmissionParentState extends State { name: 'Next', marginVertical: 16.0, onPressed: () { + _contentPush(provider.getCurrentStep); provider.nextSubmission(context); }, ), diff --git a/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart b/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart new file mode 100644 index 0000000..da8f7ed --- /dev/null +++ b/lib/features/auth/registration/view/submission_data/submit_signature/initial_signature.dart @@ -0,0 +1,43 @@ +import 'package:cims_apps/application/assets/path_assets.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/features/auth/registration/viewmodel/submission_data_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class InitialSignature extends StatelessWidget { + const InitialSignature({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + ) + ], + builder: (context, 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'), + // Consumer( + // builder: (context, provider, child) { + // return ButtonView( + // name: 'Next', + // onPressed: () { + // provider.nextSubmission(context); + // routePush(context, page: const SubmitSignature()); + // }, + // ); + // }), + ], + ); + }); + } +} diff --git a/lib/features/auth/registration/view/submission_data/submit_signature/submit_signature.dart b/lib/features/auth/registration/view/submission_data/submit_signature/submit_signature.dart new file mode 100644 index 0000000..6d4761c --- /dev/null +++ b/lib/features/auth/registration/view/submission_data/submit_signature/submit_signature.dart @@ -0,0 +1,100 @@ +import 'dart:ui' as ui; + +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/list_tile/list_tile_view.dart'; +import 'package:cims_apps/application/component/text_caption/text_caption.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:dotted_border/dotted_border.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:syncfusion_flutter_signaturepad/signaturepad.dart'; + +class SubmitSignature extends StatelessWidget { + const SubmitSignature({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + GlobalKey signaturePadKey = GlobalKey(); + return ChangeNotifierProvider( + create: (context) => SubmissionDataViewModel(), + builder: (context, 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)), + ), + body: Container( + padding: const EdgeInsets.all(16.0), + child: Consumer( + builder: (context, provider, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const TextCaption(title: 'Draw your digital sign'), + SizedBox( + height: SizeConfig.height * .28, + child: DottedBorder( + color: ColorPalette.primary, + borderType: BorderType.RRect, + radius: const Radius.circular(8), + padding: const EdgeInsets.all(6), + strokeWidth: 2.0, + dashPattern: const [14, 0, 0, 8], + child: SfSignaturePad( + key: signaturePadKey, + backgroundColor: Colors.white, + ), + ), + ), + const ListTileView( + title: + 'Make sure the sign you draw is match with your ID Card'), + const Spacer(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ButtonView( + name: 'Delete', + isOutlined: true, + width: SizeConfig.width * .42, + onPressed: () { + signaturePadKey.currentState?.clear(); + }, + ), + ButtonView( + name: 'Next', + width: SizeConfig.width * .42, + onPressed: () async { + // ui.Image image = await _signaturePadKey.currentState!.toImage(); + routePush(context, page: const SubmissionParent()); + }, + ), + ], + ) + ], + ); + }), + ), + ); + }); + } +} 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 e320808..93bed19 100644 --- a/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart +++ b/lib/features/dashboard/dashboard_public/view/dashboard_public_view.dart @@ -39,9 +39,11 @@ class DashboardPublicView extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( body: Container( - padding: const EdgeInsets.symmetric( - vertical: 32.0, - horizontal: 24.0, + padding: const EdgeInsets.only( + top: 32.0, + bottom: 8.0, + left: 24.0, + right: 24.0, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/pubspec.lock b/pubspec.lock index fe9bc01..a030f5f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -153,6 +153,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" + dotted_border: + dependency: "direct main" + description: + name: dotted_border + sha256: "108837e11848ca776c53b30bc870086f84b62ed6e01c503ed976e8f8c7df9c04" + url: "https://pub.dev" + source: hosted + version: "2.1.0" equatable: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index b5fe5ab..e80d052 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -49,6 +49,7 @@ dependencies: path_provider: ^2.1.2 path: ^1.8.3 syncfusion_flutter_signaturepad: ^24.2.4 + dotted_border: ^2.1.0