From 0762a8ab0c1cf9594cbc47eb876f0c7c48d821f4 Mon Sep 17 00:00:00 2001 From: Prajna Prayoga Date: Fri, 16 Feb 2024 20:32:34 +0700 Subject: [PATCH 1/2] feat: plan view, wip plan view model --- assets/icons/icon-portofolio.png | Bin 0 -> 1548 bytes assets/icons/icon-thumb.png | Bin 0 -> 1686 bytes lib/application/assets/path_assets.dart | 2 + .../component/button/button_view.dart | 5 +- .../component/goal_investing_view.dart | 6 +- .../component/numeric_pad/numeric_pad.dart | 25 +- lib/application/component/risk_profile.dart | 212 +++++++++++++++++ .../risk_profile/risk_profile_view.dart | 12 +- lib/features/bottom_navigation_view.dart | 45 ++-- .../view/plan/plan_view.dart | 22 -- .../view/plan/view/plan_view.dart | 206 ++++++++++++++++ .../options_starting_invest.dart | 123 ++++++++++ .../result_options_product.dart | 154 ++++++++++++ .../result_total_product.dart | 221 ++++++++++++++++++ .../view/plan/view_model/plan_view_model.dart | 11 + 15 files changed, 989 insertions(+), 55 deletions(-) create mode 100644 assets/icons/icon-portofolio.png create mode 100644 assets/icons/icon-thumb.png create mode 100644 lib/application/component/risk_profile.dart delete mode 100644 lib/features/dashboard/dashboard_account/view/plan/plan_view.dart create mode 100644 lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart create mode 100644 lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/options_starting_invest.dart create mode 100644 lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart create mode 100644 lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart create mode 100644 lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart diff --git a/assets/icons/icon-portofolio.png b/assets/icons/icon-portofolio.png new file mode 100644 index 0000000000000000000000000000000000000000..b446ff0a59a0e14a195cfdba0027da1ed3d2d794 GIT binary patch literal 1548 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 listRiskProfileResult = [ + RiskProfileResult( + 'Conservative', + PathAssets.imgCat, + ColorPalette.green500, + 'Investors with a conservative risk profile are risk-averse or do not want to experience large losses. Therefore, mutual fund products that are suitable for conservative investors are products that have low risk and stable returns.', + [ + {'desc': 'Money Market Mutual Fund', 'icon': PathAssets.iconStrongBox}, + {'desc': 'Fixed Income Mutual Fund', 'icon': PathAssets.iconMoneyReceive}, + {'desc': 'Balanced Mutual Fund', 'icon': PathAssets.iconBalance}, + ] + ), + RiskProfileResult( + 'Moderate', + PathAssets.imgDeer, + ColorPalette.orange500, + 'Investors with a moderate risk profile are investors who are ready to accept moderate risk to get higher returns than conservative mutual fund products. Therefore, mutual fund products that are suitable for moderate investors are products that have moderate risk and higher returns than conservative mutual fund products.', + [ + {'desc': 'Fixed Income Mutual Fund', 'icon': PathAssets.iconMoneyReceive}, + {'desc': 'Balanced Mutual Fund', 'icon': PathAssets.iconBalance}, + ] + ), + RiskProfileResult( + 'Aggressive', + PathAssets.imgLion, + ColorPalette.purple500, + 'Investors with an aggressive risk profile are investors who are ready to accept high risks to get high returns. Therefore, mutual fund products that are suitable for aggressive investors are products that have high risk and high returns.', + [ + {'desc': 'Equity Mutual Fund', 'icon': PathAssets.iconCoins}, + {'desc': 'Aggressive Balanced Fund', 'icon': PathAssets.iconBalance}, + ] + ) + ]; + RiskProfileResult riskProfile; + if(totalScore <= 25){ + riskProfile = listRiskProfileResult[0]; + }else if(totalScore <= 50){ + riskProfile = listRiskProfileResult[1]; + }else{ + riskProfile = listRiskProfileResult[2]; + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Container( + decoration: BoxDecoration( + color: riskProfile.color, + image: DecorationImage(image: AssetImage(riskProfile.img), alignment: Alignment.centerRight), + boxShadow: [ + BoxShadow( + color: riskProfile.color.withOpacity(0.2), + blurRadius: 30 + ) + ] + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + riskProfile.type, + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 24, + color: ColorPalette.white + ), + ), + SizedBox(height: 16,), + Text('Total Score :', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 16, + color: ColorPalette.white + ), + ), + Text('$totalScore', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 28, + color: ColorPalette.white + ), + ) + ], + ), + ), + ], + ), + ), + ), + SizedBox( + height: 24, + ), + Text( + riskProfile.desc, + style: TextStyle( + color: ColorPalette.slate500, + fontSize: 16 + ) + ), + SizedBox( + height: 24, + ), + Text( + 'Suitable Product', + style: TextStyle( + color: ColorPalette.slate800, + fontWeight: FontWeight.bold, + fontSize: 18 + ), + ), + SizedBox( + height: 16, + ), + rowSuitableProduct ? + Row( + children: riskProfile.suitableProduct.asMap().entries.map((e) { + return Expanded( + child: Container( + margin: EdgeInsets.only(left: e.key != 0 ? 12 : 0), + padding: EdgeInsets.all(16), + decoration: BoxDecoration( + border: Border.all(color: ColorPalette.slate200), + borderRadius: BorderRadius.circular(6) + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: riskProfile.color.withOpacity(0.1) + ), + child: Image.asset(e.value['icon'], width: SizeConfig.width * 0.07, color: riskProfile.color) + ), + SizedBox( + height: 12, + ), + Text(e.value['desc'], + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800 + ), + ) + ], + ), + ) + ); + }).toList(), + ) + : Wrap( + runSpacing: 16, + children: riskProfile.suitableProduct.map((e) { + return Container( + padding: EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + border: Border.all(color: ColorPalette.slate200), + ), + child: Row( + children: [ + Container( + padding: EdgeInsets.all(8), + alignment: Alignment.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: riskProfile.color.withOpacity(0.1) + ), + child: Image.asset(e['icon'], width: SizeConfig.width * 0.07, color: riskProfile.color) + ), + SizedBox( + width: 12, + ), + Expanded( + child: Text(e['desc'], + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800 + ), + ), + ) + ], + ), + ); + }).toList(), + ) + ], + ); + } +} diff --git a/lib/features/auth/registration/view/submission_data/risk_profile/risk_profile_view.dart b/lib/features/auth/registration/view/submission_data/risk_profile/risk_profile_view.dart index 9103416..ac62afc 100644 --- a/lib/features/auth/registration/view/submission_data/risk_profile/risk_profile_view.dart +++ b/lib/features/auth/registration/view/submission_data/risk_profile/risk_profile_view.dart @@ -22,7 +22,7 @@ class RiskProfileView extends StatelessWidget { title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - BackButtonView(), + const BackButtonView(), const Text('Risk Profile', textAlign: TextAlign.center), SizedBox(width: SizeConfig.width * 0.1) ], @@ -33,11 +33,11 @@ class RiskProfileView extends StatelessWidget { body: Container( width: SizeConfig.width, height: SizeConfig.height, - padding: EdgeInsets.all(24), + padding: const EdgeInsets.all(24), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Column( + const Column( children: [ ImageView(image: PathAssets.imgDataReport), SizedBox( @@ -66,7 +66,7 @@ class RiskProfileView extends StatelessWidget { ), Column( children: [ - Row( + const Row( mainAxisAlignment: MainAxisAlignment.center, children: [ ImageView( @@ -86,13 +86,13 @@ class RiskProfileView extends StatelessWidget { ) ], ), - SizedBox( + const SizedBox( height: 24, ), ButtonView( name: "Let's Start", onPressed: () { - routePush(context, page: QuestionView()); + routePush(context, page: const QuestionView()); }, marginVertical: 0, ) diff --git a/lib/features/bottom_navigation_view.dart b/lib/features/bottom_navigation_view.dart index ffe57f5..46cfca6 100644 --- a/lib/features/bottom_navigation_view.dart +++ b/lib/features/bottom_navigation_view.dart @@ -1,8 +1,10 @@ import 'package:cims_apps/application/theme/color_palette.dart'; import 'package:cims_apps/features/dashboard/dashboard_account/view/homepage/homepage_view.dart'; -import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/plan_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/plan_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart'; import 'package:cims_apps/features/dashboard/dashboard_account/view/portfolio/portfolio_view.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class BottomNavigationView extends StatefulWidget { const BottomNavigationView({Key? key}) : super(key: key); @@ -48,25 +50,28 @@ class _BottomNavigationViewState extends State { ), ]; - return Scaffold( - body: listWidget[_selectedIndex], - bottomNavigationBar: Padding( - padding: const EdgeInsets.symmetric(vertical: 12), - child: BottomNavigationBar( - elevation: 0, - onTap: (value) { - setState(() { - _selectedIndex = value; - }); - }, - currentIndex: _selectedIndex, - items: listNavigation, - type: BottomNavigationBarType.fixed, - showUnselectedLabels: true, - selectedItemColor: ColorPalette.primary, - unselectedItemColor: Colors.black, - selectedLabelStyle: const TextStyle(color: ColorPalette.primary), - unselectedLabelStyle: const TextStyle(color: Colors.black), + return ChangeNotifierProvider( + create: (context) => PlanViewModel(), + child: Scaffold( + body: listWidget[_selectedIndex], + bottomNavigationBar: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: BottomNavigationBar( + elevation: 0, + onTap: (value) { + setState(() { + _selectedIndex = value; + }); + }, + currentIndex: _selectedIndex, + items: listNavigation, + type: BottomNavigationBarType.fixed, + showUnselectedLabels: true, + selectedItemColor: ColorPalette.primary, + unselectedItemColor: Colors.black, + selectedLabelStyle: const TextStyle(color: ColorPalette.primary), + unselectedLabelStyle: const TextStyle(color: Colors.black), + ), ), ), ); diff --git a/lib/features/dashboard/dashboard_account/view/plan/plan_view.dart b/lib/features/dashboard/dashboard_account/view/plan/plan_view.dart deleted file mode 100644 index 004462f..0000000 --- a/lib/features/dashboard/dashboard_account/view/plan/plan_view.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:cims_apps/application/component/custom_app_bar/custom_app_bar.dart'; -import 'package:cims_apps/application/component/goal_investing_view.dart'; -import 'package:flutter/material.dart'; - -class PlanView extends StatelessWidget { - const PlanView({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar(height: 70, title: 'Investment Plan'), - body: SingleChildScrollView( - padding: EdgeInsets.all(24), - child: Column( - children: [ - GoalInvestingView() - ], - ), - ), - ); - } -} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart b/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart new file mode 100644 index 0000000..c5caad2 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart @@ -0,0 +1,206 @@ +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/goal_investing_view.dart'; +import 'package:cims_apps/application/component/numeric_pad/numeric_pad.dart'; +import 'package:cims_apps/application/component/risk_profile.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/number_formatter.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/options_starting_invest.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class PlanView extends StatefulWidget { + const PlanView({super.key}); + + @override + State createState() => _PlanViewState(); +} + +class _PlanViewState extends State { + TextEditingController inputController = TextEditingController(); + + @override + void dispose() { + // TODO: implement dispose + super.dispose(); + inputController.dispose(); + } + + @override + Widget build(BuildContext context) { + + return Scaffold( + appBar: CustomAppBar(height: 70, title: 'Investment Plan'), + body: SingleChildScrollView( + padding: EdgeInsets.all(24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + RiskProfile( + totalScore: 26, + rowSuitableProduct: true + ), + SizedBox( + height: 32, + ), + Text('Your Goal in Investing', + style: TextStyle( + fontWeight: FontWeight.w700, + color: ColorPalette.slate800, + fontSize: 18 + ), + ), + SizedBox( + height: 24, + ), + GoalInvestingView( + onListSelected: (p0) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) { + return modalInvest(context, p0); + }, + ); + }, + ) + ], + ), + ), + ); + } + + Widget modalInvest(context, String text) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16) + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text("It's time to invest", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600 + ), + ), + GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Icon(Icons.close_rounded) + ) + ], + ), + ), + Divider(color: ColorPalette.slate200, height: 1), + Padding( + padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(text, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + + ), + ), + Row( + children: [ + Icon(Icons.change_circle_outlined, color: ColorPalette.primary, size: 20), + SizedBox(width: 4), + Text('Change', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: ColorPalette.primary + ), + ) + ], + ) + ], + ), + TextField( + controller: inputController, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.w600, + color: ColorPalette.slate800 + ), + keyboardType: TextInputType.number, + onChanged: (value) { + value = value.replaceAll('Rp ', '').replaceAll('.', ''); + double parseValue = double.parse(value); + if(value.isNotEmpty){ + inputController.text = NumberFormatter.numberCurrency(parseValue, 'Rp ', 'id_ID', decimalDigits: 0); + }else{ + inputController.text = NumberFormatter.numberCurrency(0, 'Rp ', 'id_ID', decimalDigits: 0); + } + }, + decoration: InputDecoration( + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: ColorPalette.primary, + width: 2 + ), + ) + ), + ), + SizedBox(height: 12), + Text('Minimum Budget Rp1,000,000', + style: TextStyle( + color: ColorPalette.slate400, + fontSize: 16, + fontWeight: FontWeight.w600 + ), + ), + SizedBox(height: 16), + NumericPad(onNumberSelected: (p0) { + String checkIsZeroInput = inputController.text.replaceAll('Rp ', '').replaceAll(',', ''); + String getNumeric = p0; + if(p0.isNotEmpty){ + if(checkIsZeroInput != '0'){ + getNumeric = checkIsZeroInput + getNumeric; + } + }else{ + getNumeric = checkIsZeroInput.substring(0, checkIsZeroInput.length - 1); + } + String formatNumeric = NumberFormatter.numberCurrency( + double.parse(getNumeric), 'Rp ', 'id_ID', decimalDigits: 0).replaceAll('.', ','); + inputController.text = formatNumeric; + }), + SizedBox(height: 8), + ButtonView( + name: 'Next', + onPressed: () { + Navigator.pop(context); + int formatIntParse = int.parse(inputController.text.replaceAll('Rp ', '').replaceAll(',', '')); + showModalBottomSheet(context: context, builder: (context) => OptionsStartingInvest(totalInvest: formatIntParse)); + }, + width: SizeConfig.width, + heightWrapContent: true, + contentPadding: EdgeInsets.symmetric(vertical: 16), + marginVertical: 0, + ) + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/options_starting_invest.dart b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/options_starting_invest.dart new file mode 100644 index 0000000..1047ecd --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/options_starting_invest.dart @@ -0,0 +1,123 @@ +import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/theme/color_palette.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart'; +import 'package:flutter/material.dart'; + +class OptionsStartingInvest extends StatelessWidget { + final int totalInvest; + const OptionsStartingInvest({super.key, required this.totalInvest}); + + @override + Widget build(BuildContext context) { + List listOptions = [ + { + "title": "Results From Your Risk Profile", + "subtitle": "Start Investing from recommended products that suit you", + "iconImg": PathAssets.iconThumb, + "value": "risk profile" + }, + { + "title": "Create Portfolio", + "subtitle": "Choose a portfolio according to your investment goals", + "iconImg": PathAssets.iconPortofolio, + "value": "investment goals" + } + ]; + + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16) + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Your options for starting to invest', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600 + ), + ), + GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Icon(Icons.close_rounded), + ) + ], + ), + ), + SizedBox(height: 8), + ...listOptions.asMap().entries.map((e) { + return GestureDetector( + onTap: () { + Navigator.pop(context); + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) => ResultOptionsProduct(totalInvest: totalInvest)); + }, + child: Container( + margin: const EdgeInsets.only(left: 24, right: 24, bottom: 12), + padding: EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(14), + border: Border.all(color: ColorPalette.slate200), + ), + child: Row( + children: [ + Expanded( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: EdgeInsets.all(8), + alignment: Alignment.center, + decoration: BoxDecoration( + color: ColorPalette.blue200.withOpacity(0.5), + borderRadius: BorderRadius.circular(8) + ), + child: Image.asset(e.value['iconImg'], width: 22), + ), + SizedBox(width: 16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(e.value['title'], + style: TextStyle( + fontWeight: FontWeight.w600, + color: ColorPalette.slate800, + fontSize: 16 + ), + ), + SizedBox(height: 4), + Text(e.value['subtitle'], + style: TextStyle( + color: ColorPalette.slate400 + ), + ) + ], + ), + ) + ], + ), + ), + Icon(Icons.keyboard_arrow_right_rounded, color: ColorPalette.slate400,) + ], + ), + ), + ); + }), + SizedBox(height: 16,) + ], + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart new file mode 100644 index 0000000..348f751 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart @@ -0,0 +1,154 @@ +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/theme/color_palette.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart'; +import 'package:flutter/material.dart'; + +class Product { + String name, type; + double totalPercent; + + Product(this.name, this.type, this.totalPercent); +} +class ResultOptionsProduct extends StatelessWidget { + final int totalInvest; + const ResultOptionsProduct({super.key, required this.totalInvest}); + + @override + Widget build(BuildContext context) { + List listProduct = [ + Product('Gemilang Dana Kas Maxima', 'Money Market', 0.7), + Product('Gemilang Dana Likuid', 'Bonds', 0.2), + Product('Gemilang Kas 2 Kelas A', 'Shares', 0.1) + ]; + + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16) + ), + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Icon(Icons.arrow_back, color: ColorPalette.slate500), + Text('Results from your risk profile', + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: 18, + color: ColorPalette.slate800 + ), + ), + const Icon(Icons.close_rounded, color: ColorPalette.slate400) + ], + ), + const SizedBox(height: 32), + SingleChildScrollView( + child: Column( + children: listProduct.asMap().entries.map((e) { + return Container( + margin: const EdgeInsets.only(bottom: 16), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: ColorPalette.slate200), + borderRadius: BorderRadius.circular(12), + boxShadow: [ + const BoxShadow( + color: Color(0XFF1E293B0A) + ) + ] + ), + child: Column( + children: [ + Row( + children: [ + const ImageView(image: PathAssets.iconGoogle, width: 30,), + const SizedBox( + width: 12, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(e.value.name, + style: const TextStyle( + fontWeight: FontWeight.w700, + color: ColorPalette.slate800 + ), + ), + const SizedBox(height: 4,), + Container( + padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12), + decoration: BoxDecoration( + border: Border.all(color: ColorPalette.investTypeColor[e.value.type]!), + color: ColorPalette.investTypeBgColor[e.value.type], + borderRadius: BorderRadius.circular(40) + ), + child: Text(e.value.type, + style: TextStyle( + color: ColorPalette.investTypeColor[e.value.type], + fontWeight: FontWeight.w600 + ), + ), + ) + ], + ), + ), + Text('${(e.value.totalPercent * 100).toInt()} %', + style: const TextStyle( + fontWeight: FontWeight.w700, + fontSize: 16, + color: ColorPalette.slate800 + ), + ) + ], + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 16), + child: Divider(height: 1, color: ColorPalette.slate200), + ), + GestureDetector( + onTap: () { + }, + child: const Text('See More', + style: TextStyle( + color: ColorPalette.slate500, + fontWeight: FontWeight.w600, + ), + ), + ) + ], + ), + ); + }).toList(), + ), + ), + const SizedBox( + height: 16, + ), + ButtonView( + name: 'Next', + onPressed: () { + Navigator.pop(context); + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) => ResultTotalProduct(listProduct: listProduct, totalInvest: totalInvest) + ); + }, + width: SizeConfig.width, + heightWrapContent: true, + contentPadding: const EdgeInsets.symmetric(vertical: 16), + marginVertical: 0, + ) + ], + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart new file mode 100644 index 0000000..57c55a8 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart @@ -0,0 +1,221 @@ +import 'package:cims_apps/application/component/button/button_view.dart'; +import 'package:cims_apps/application/theme/color_palette.dart'; +import 'package:cims_apps/core/utils/number_formatter.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart'; +import 'package:flutter/material.dart'; + +class ResultTotalProduct extends StatelessWidget { + final int totalInvest; + final List listProduct; + const ResultTotalProduct({super.key, required this.listProduct, required this.totalInvest}); + + @override + Widget build(BuildContext context) { + + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16) + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(24.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Your Investment Today', + style: TextStyle( + color: ColorPalette.slate800, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ), + GestureDetector( + onTap: () => Navigator.pop(context), + child: Icon(Icons.close_rounded) + ) + ], + ), + ), + ...listProduct.asMap().entries.map((e) { + return Container( + padding: EdgeInsets.only(left: 16, right: 24, bottom: 16, top: 16), + decoration: BoxDecoration( + border: Border( + left: BorderSide( + color: ColorPalette.investTypeColor[e.value.type]!, + width: 8, + ) + ) + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 5, + child: Text(e.value.name, + style: TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ) + ), + Expanded( + flex: 7, + child: Text( + NumberFormatter.numberCurrency(totalInvest / e.value.totalPercent, 'Rp ', 'id_ID'), + textAlign: TextAlign.end, + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 18, + color: ColorPalette.slate800 + ), + ) + ) + ], + ), + ); + }).toList(), + SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Purchase Commission', + style: TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ), + Text('Free', + style: TextStyle( + color: ColorPalette.primary, + fontSize: 18, + fontWeight: FontWeight.w700 + ), + ) + ], + ), + ), + SizedBox(height: 16,), + Container( + color: ColorPalette.slate200.withOpacity(0.5), + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Total', + style: TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ), + Text(NumberFormatter.numberCurrency(totalInvest, 'Rp ', 'id_ID'), + textAlign: TextAlign.end, + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 18, + color: ColorPalette.slate800 + ), + ) + ], + ), + ), + buttonAgreement(), + Container( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Total Payment', + style: TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ), + Text(NumberFormatter.numberCurrency(totalInvest, 'Rp ', 'id_ID'), + textAlign: TextAlign.end, + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 18, + color: ColorPalette.slate800 + ), + ) + ], + ), + ), + ButtonView( + disabled: true, + name: 'Subscribe Now', + onPressed: () { + + }, + disabledBgColor: ColorPalette.slate200.withOpacity(0.5), + textColor: ColorPalette.slate400, + textWeight: FontWeight.w700, + textSize: 20, + backgroundColor: ColorPalette.primary, + ) + ], + ), + ); + } + + Widget buttonAgreement() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 24, + width: 24, + child: Radio( + value: false, + groupValue: false, + onChanged: (value) { + + }, + activeColor: ColorPalette.primary, + ), + ), + SizedBox(width: 12,), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('I agree to buy the mutual fund on this page and have read and agreed to all the contents of the Prospectus and summary information and understand the risks of my investment decision.', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: ColorPalette.slate400 + ), + ), + GestureDetector( + onTap: () { + + }, + child: Text('Read More', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + decoration: TextDecoration.underline, + color: ColorPalette.primary + ), + ) + ) + ], + ) + ) + ], + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart b/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart new file mode 100644 index 0000000..634e624 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart @@ -0,0 +1,11 @@ + +import 'package:flutter/material.dart'; + +class PlanViewModel extends ChangeNotifier { + bool isAgreement = false; + + void setAgreement() { + isAgreement = !isAgreement; + notifyListeners(); + } +} \ No newline at end of file From 99db140a0c6123962cc9623859c13a381be3b696 Mon Sep 17 00:00:00 2001 From: Prajna Prayoga Date: Mon, 19 Feb 2024 19:58:29 +0700 Subject: [PATCH 2/2] feat: flow subscribe product --- assets/icons/icon-bag.png | Bin 0 -> 2308 bytes assets/icons/icon-car.png | Bin 0 -> 1898 bytes assets/icons/icon-cart.png | Bin 0 -> 1856 bytes assets/icons/icon-gadget.png | Bin 0 -> 1441 bytes assets/icons/icon-market.png | Bin 0 -> 1460 bytes assets/icons/icon-plane.png | Bin 0 -> 1765 bytes assets/icons/icon-ticket.png | Bin 0 -> 1546 bytes assets/images/img-open-shopping.png | Bin 0 -> 103380 bytes assets/images/img-payment-success.png | Bin 0 -> 75558 bytes lib/application/assets/path_assets.dart | 9 + .../component/modal_redirect_app.dart | 41 +++ .../{ => subscribe}/goal_investing_view.dart | 22 +- .../subscribe/input_investment_view.dart | 143 +++++++++ .../component/subscribe/other_plan_view.dart | 182 +++++++++++ .../subscribe/total_payment_view.dart} | 199 ++++++------ lib/application/component/success_view.dart | 52 ++++ .../component/text_form/text_form_view.dart | 10 +- lib/application/theme/color_palette.dart | 1 + .../auth/login/view/password_view.dart | 1 + lib/features/bottom_navigation_view.dart | 41 ++- .../view/homepage/homepage_view.dart | 2 +- .../view/invest_type/invest_type_view.dart | 153 +++++----- .../view/plan/view/plan_view.dart | 112 +------ .../result_options_product.dart | 43 ++- .../view/plan/view_model/plan_view_model.dart | 9 +- .../{ => view}/product_chart_view.dart | 0 .../view/product/{ => view}/product_view.dart | 126 ++++---- .../step_subscribe/payment_method_view.dart | 282 ++++++++++++++++++ .../step_subscribe/select_goal_investing.dart | 83 ++++++ .../view_model/product_view_model.dart | 27 ++ lib/main.dart | 4 + 31 files changed, 1170 insertions(+), 372 deletions(-) create mode 100644 assets/icons/icon-bag.png create mode 100644 assets/icons/icon-car.png create mode 100644 assets/icons/icon-cart.png create mode 100644 assets/icons/icon-gadget.png create mode 100644 assets/icons/icon-market.png create mode 100644 assets/icons/icon-plane.png create mode 100644 assets/icons/icon-ticket.png create mode 100644 assets/images/img-open-shopping.png create mode 100644 assets/images/img-payment-success.png create mode 100644 lib/application/component/modal_redirect_app.dart rename lib/application/component/{ => subscribe}/goal_investing_view.dart (71%) create mode 100644 lib/application/component/subscribe/input_investment_view.dart create mode 100644 lib/application/component/subscribe/other_plan_view.dart rename lib/{features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart => application/component/subscribe/total_payment_view.dart} (52%) create mode 100644 lib/application/component/success_view.dart rename lib/features/dashboard/dashboard_account/view/product/{ => view}/product_chart_view.dart (100%) rename lib/features/dashboard/dashboard_account/view/product/{ => view}/product_view.dart (90%) create mode 100644 lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/payment_method_view.dart create mode 100644 lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/select_goal_investing.dart create mode 100644 lib/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart diff --git a/assets/icons/icon-bag.png b/assets/icons/icon-bag.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc02db2ad7a37b21162e67bfda6b2bf1f44898e GIT binary patch literal 2308 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 literal 0 HcmV?d00001 diff --git a/assets/icons/icon-market.png b/assets/icons/icon-market.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb8e44ec8e4e92122d30833b36c76eeb42ef782 GIT binary patch literal 1460 zcmah}X*3iH6dudim$5e1%#bCrL_~~-(JYz?SxdI8CDGVYA;d@~48vG6HCcuc<5@-? zp&UydSwbA+DUQiZO1w+NUF zdoU=PBA31n6)qS(nPn1~uj^VsrW;Ky=SAdmIDWg6&O0!b^X#~B&KLSx9lcJQpV#@o2JKQYTY^uZerzLj#y?mbFbDT)BqK&2G?WNXG+)88ShiK{Eca?rHV% zQ2v%`bS~8ap0Zac+3bcFc?kGulskSGKxM79BuV$%Z z$Jyze<606$`f#b|jx2Nn7j*5jN*k(3~Nxf@}MEbjr1LUYyJ>3>XcRVlJ7X9Hr5ow`YQn3+s{?q(mJwTY{rudBG%`%EC=- zXi@Tl4pp(Z{ebHhW=G!%EZug{8(8xix-Cy>K7^NEJ5Vb$#tyhDMn+ht zfNcI3EDWBKdNJJIQZx@`-<)$pcc&yu4oW*yN{r55o3?&!1jV_Rn^!Zt`sz%x^S?{t z^jAy!*-9AWcme7KA=R;^b+%>U9>T~QN7#1)Uof68|Iehqrk=K=c9+peeh4|N$(5@( z)?sHwP2QgR5?br>I(OeIm!q*3S;kS%iScmToHE_N8iY3TJs4m^nk?><5YYW%wCu`? z@RyGTfxTzPz9y*)sH=jUg9#YF*^wMNN*qe>^K4*Q_PYdOUh12c*Q~v?~ CotcvW literal 0 HcmV?d00001 diff --git a/assets/icons/icon-plane.png b/assets/icons/icon-plane.png new file mode 100644 index 0000000000000000000000000000000000000000..91a6a9ca0842627e447b7e456d0bbf660a7b4706 GIT binary patch literal 1765 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 literal 0 HcmV?d00001 diff --git a/assets/images/img-open-shopping.png b/assets/images/img-open-shopping.png new file mode 100644 index 0000000000000000000000000000000000000000..8d766974b99c763c586675a71e0163005a5e4649 GIT binary patch literal 103380 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

s_CRg8zk~jU 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%0AZ~Z=+rwTtX@&L*={e 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 Pe@KhVi~anl@Ap3d1}b^N literal 0 HcmV?d00001 diff --git a/assets/images/img-payment-success.png b/assets/images/img-payment-success.png new file mode 100644 index 0000000000000000000000000000000000000000..cac693d86037ba98fb1cdbebe64326db45e0b9ba GIT binary patch literal 75558 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�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 U#7;=3{?pixZk|^tE}=R91JB7dI{*Lx literal 0 HcmV?d00001 diff --git a/lib/application/assets/path_assets.dart b/lib/application/assets/path_assets.dart index 7298748..0b5f688 100644 --- a/lib/application/assets/path_assets.dart +++ b/lib/application/assets/path_assets.dart @@ -39,6 +39,13 @@ class PathAssets { static const String iconCreatePlan = 'assets/icons/icon-create-plan.png'; static const String iconThumb = 'assets/icons/icon-thumb.png'; static const String iconPortofolio = 'assets/icons/icon-portofolio.png'; + static const String iconPlane = 'assets/icons/icon-plane.png'; + static const String iconCart = 'assets/icons/icon-cart.png'; + static const String iconBag = 'assets/icons/icon-bag.png'; + static const String iconMarket = 'assets/icons/icon-market.png'; + static const String iconTicket = 'assets/icons/icon-ticket.png'; + static const String iconGadget = 'assets/icons/icon-gadget.png'; + static const String iconCar = 'assets/icons/icon-car.png'; /// IMAGE static const String imgSplashLogo = 'assets/images/splash-logo.png'; @@ -72,4 +79,6 @@ 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 imgOpenShopping = 'assets/images/img-open-shopping.png'; + static const String imgPaymentSuccess = 'assets/images/img-payment-success.png'; } diff --git a/lib/application/component/modal_redirect_app.dart b/lib/application/component/modal_redirect_app.dart new file mode 100644 index 0000000..3292e4d --- /dev/null +++ b/lib/application/component/modal_redirect_app.dart @@ -0,0 +1,41 @@ +import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/image/image_view.dart'; +import 'package:cims_apps/application/theme/color_palette.dart'; +import 'package:flutter/material.dart'; + +class TypeApp { + String img, title; + + TypeApp(this.img, this.title); +} + +class ModalRedirectApp extends StatelessWidget { + final String value; + const ModalRedirectApp({super.key, required this.value}); + + @override + Widget build(BuildContext context) { + Map typeApp = { + 'Shopping Pay': TypeApp(PathAssets.imgOpenShopping, 'Shopping App'), + }; + + return Column( + children: [ + ImageView(image: typeApp[value]!.img), + Text('Open ${typeApp[value]!.title}', + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.w600, + color: ColorPalette.slate800 + ), + ), + Text('You will be redirected to the ${typeApp[value]!.title.toLowerCase()} to continue the payment', + style: TextStyle( + fontSize: 16, + color: ColorPalette.slate400 + ), + ) + ], + ); + } +} diff --git a/lib/application/component/goal_investing_view.dart b/lib/application/component/subscribe/goal_investing_view.dart similarity index 71% rename from lib/application/component/goal_investing_view.dart rename to lib/application/component/subscribe/goal_investing_view.dart index 8ea6606..80c3e53 100644 --- a/lib/application/component/goal_investing_view.dart +++ b/lib/application/component/subscribe/goal_investing_view.dart @@ -1,5 +1,7 @@ import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/subscribe/other_plan_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:flutter/material.dart'; @@ -20,7 +22,7 @@ class GoalInvestingView extends StatelessWidget { GoalInvest(PathAssets.iconToga, 'Education'), GoalInvest(PathAssets.iconCake, 'Marriage'), GoalInvest(PathAssets.iconHouse, 'Old age days'), - GoalInvest(PathAssets.iconCreatePlan, 'Create Plan'), + GoalInvest(PathAssets.iconCreatePlan, 'Other Plan'), ]; return Column( @@ -30,7 +32,18 @@ class GoalInvestingView extends StatelessWidget { padding: EdgeInsets.only(top: e.key != 0 ? 16 : 0), child: ListTile( onTap: () { - onListSelected(e.value.title); + if(e.value.title == 'Other Plan'){ + routePush( + context, + page: OtherPlanView( + selectedPlan: (value) { + onListSelected(e.value.title); + }, + ) + ); + }else{ + onListSelected(e.value.title); + } }, shape: RoundedRectangleBorder( side: BorderSide(color: ColorPalette.slate200), @@ -51,10 +64,11 @@ class GoalInvestingView extends StatelessWidget { title: Text(e.value.title, style: TextStyle( fontWeight: FontWeight.w600, - fontSize: 16 + fontSize: 16, + color: ColorPalette.slate800 ), ), - trailing: Icon(Icons.chevron_right_rounded), + trailing: Icon(Icons.chevron_right_rounded, color: ColorPalette.slate400), ), ); }).toList() diff --git a/lib/application/component/subscribe/input_investment_view.dart b/lib/application/component/subscribe/input_investment_view.dart new file mode 100644 index 0000000..846a057 --- /dev/null +++ b/lib/application/component/subscribe/input_investment_view.dart @@ -0,0 +1,143 @@ +import 'package:cims_apps/application/component/button/button_view.dart'; +import 'package:cims_apps/application/component/numeric_pad/numeric_pad.dart'; +import 'package:cims_apps/application/theme/color_palette.dart'; +import 'package:cims_apps/core/utils/number_formatter.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:flutter/material.dart'; + +class InputInvestmentView extends StatefulWidget { + final String selectedPlan; + final void Function(String value) nextMove; + const InputInvestmentView({super.key, required this.selectedPlan, required this.nextMove}); + + @override + State createState() => _InputInvestmentViewState(); +} + +class _InputInvestmentViewState extends State { + TextEditingController inputController = TextEditingController(); + + @override + void initState() { + // TODO: implement initState + inputController.text = 'Rp 0'; + super.initState(); + } + + @override + void dispose() { + // TODO: implement dispose + super.dispose(); + inputController.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(16) + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox(height: 16), + Padding( + padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(widget.selectedPlan, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + + ), + ), + Row( + children: [ + Icon(Icons.change_circle_outlined, color: ColorPalette.primary, size: 20), + SizedBox(width: 4), + Text('Change', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: ColorPalette.primary + ), + ) + ], + ) + ], + ), + TextField( + controller: inputController, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.w600, + color: ColorPalette.slate800 + ), + keyboardType: TextInputType.number, + onChanged: (value) { + value = value.replaceAll('Rp ', '').replaceAll('.', ''); + double parseValue = double.parse(value); + if(value.isNotEmpty){ + inputController.text = NumberFormatter.numberCurrency(parseValue, 'Rp ', 'id_ID', decimalDigits: 0); + }else{ + inputController.text = NumberFormatter.numberCurrency(0, 'Rp ', 'id_ID', decimalDigits: 0); + } + }, + decoration: InputDecoration( + enabledBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: ColorPalette.primary, + width: 2 + ), + ) + ), + ), + SizedBox(height: 12), + Text('Minimum Budget Rp1,000,000', + style: TextStyle( + color: ColorPalette.slate400, + fontSize: 16, + fontWeight: FontWeight.w600 + ), + ), + SizedBox(height: 16), + NumericPad(onNumberSelected: (p0) { + String checkIsZeroInput = inputController.text.replaceAll('Rp ', '').replaceAll(',', ''); + String getNumeric = p0; + if(p0.isNotEmpty){ + if(checkIsZeroInput != '0'){ + getNumeric = checkIsZeroInput + getNumeric; + } + }else{ + getNumeric = checkIsZeroInput.substring(0, checkIsZeroInput.length - 1); + } + String formatNumeric = NumberFormatter.numberCurrency( + double.parse(getNumeric), 'Rp ', 'id_ID', decimalDigits: 0).replaceAll('.', ','); + inputController.text = formatNumeric; + }), + SizedBox(height: 8), + ButtonView( + name: 'Next', + onPressed: () { + widget.nextMove(inputController.text); + }, + width: SizeConfig.width, + heightWrapContent: true, + contentPadding: EdgeInsets.symmetric(vertical: 16), + marginVertical: 0, + ) + ], + ), + ), + ], + ), + );; + } +} diff --git a/lib/application/component/subscribe/other_plan_view.dart b/lib/application/component/subscribe/other_plan_view.dart new file mode 100644 index 0000000..60bff7a --- /dev/null +++ b/lib/application/component/subscribe/other_plan_view.dart @@ -0,0 +1,182 @@ +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:flutter/material.dart'; + +class Plan { + String img, name; + + Plan(this.img, this.name); +} + +class OtherPlanView extends StatefulWidget { + final void Function(String value) selectedPlan; + const OtherPlanView({super.key, required this.selectedPlan}); + + @override + State createState() => _OtherPlanViewState(); +} + +class _OtherPlanViewState extends State { + TextEditingController createController = TextEditingController(); + Plan selectedPlan = Plan('', ''); + + List listPlan = [ + Plan(PathAssets.iconToga, 'Education'), + Plan(PathAssets.iconCake, 'Marriage'), + Plan(PathAssets.iconHouse, 'Home'), + Plan(PathAssets.iconTicket, 'Entertainment'), + Plan(PathAssets.iconGadget, 'Gadget'), + Plan(PathAssets.iconMarket, 'Business'), + Plan(PathAssets.iconBag, 'Fashion'), + Plan(PathAssets.iconCart, 'Shop'), + Plan(PathAssets.iconCar, 'Vehicle'), + Plan(PathAssets.iconPlane, 'Holiday'), + Plan(PathAssets.iconCreatePlan, 'Create Plan'), + ]; + + @override + void initState() { + // TODO: implement initState + super.initState(); + } + + @override + void dispose() { + // TODO: implement dispose + super.dispose(); + createController.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CustomAppBar( + height: 70, + title: 'Other Plan' + ), + body: GridView( + padding: EdgeInsets.symmetric(horizontal: 24, vertical: 32), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), + children: listPlan.map((e) => cardPlan(e)).toList(), + ), + bottomNavigationBar: Container( + height: 110, + padding: EdgeInsets.symmetric(horizontal: 24), + child: ButtonView( + name: 'Select', + disabled: !(selectedPlan.img != ''), + onPressed: () { + Navigator.pop(context); + widget.selectedPlan(selectedPlan.name); + }, + heightWrapContent: true, + width: SizeConfig.width, + contentPadding: EdgeInsets.symmetric(vertical: 12), + textColor: selectedPlan.img == '' ? ColorPalette.slate500 : ColorPalette.white, + disabledBgColor: ColorPalette.slate200, + backgroundColor: ColorPalette.primary, + ), + ), + ); + } + + Widget cardPlan(Plan plan) { + return GestureDetector( + onTap: () { + if(plan.name == 'Create Plan'){ + showModalBottomSheet( + context: context, + builder: (context) => modalCreatePlan(), + ); + } + setState(() { + selectedPlan = plan; + }); + }, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + border: Border.all(color: selectedPlan == plan ? ColorPalette.primary : Colors.transparent) + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: SizeConfig.width * 0.12, + height: SizeConfig.width * 0.12, + padding: EdgeInsets.all(12), + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: ColorPalette.blue200.withOpacity(0.5) + ), + child: ImageView(image: plan.img) + ), + SizedBox(height: 12), + Text(plan.name, + style: TextStyle( + color: selectedPlan == plan ? ColorPalette.primary : ColorPalette.slate800, + fontWeight: FontWeight.w600 + ), + ) + ], + ), + ), + ); + } + + Widget modalCreatePlan() { + return Container( + padding: EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Create your plan', + style: TextStyle( + fontWeight: FontWeight.w600, + color: ColorPalette.slate800, + fontSize: 16 + ), + ), + GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Icon(Icons.close_rounded), + ) + ], + ), + TextFormView( + name: 'Objective Name', + ctrl: createController, + ), + SizedBox(height: 24), + ButtonView( + name: 'Select', + marginVertical: 0, + disabled: !(createController.text != ''), + onPressed: () { + Navigator.of(context)..pop()..pop(); + widget.selectedPlan(selectedPlan.name); + }, + heightWrapContent: true, + width: SizeConfig.width, + contentPadding: EdgeInsets.symmetric(vertical: 16), + textColor: createController.text == '' ? ColorPalette.slate500 : ColorPalette.white, + disabledBgColor: ColorPalette.slate200, + backgroundColor: ColorPalette.primary, + ), + ], + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart b/lib/application/component/subscribe/total_payment_view.dart similarity index 52% rename from lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart rename to lib/application/component/subscribe/total_payment_view.dart index 57c55a8..634be7f 100644 --- a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart +++ b/lib/application/component/subscribe/total_payment_view.dart @@ -1,21 +1,33 @@ 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/number_formatter.dart'; -import 'package:cims_apps/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view/step_subscribe/payment_method_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; import 'package:flutter/material.dart'; -class ResultTotalProduct extends StatelessWidget { +class TotalPaymentView extends StatefulWidget { final int totalInvest; final List listProduct; - const ResultTotalProduct({super.key, required this.listProduct, required this.totalInvest}); + const TotalPaymentView({ + super.key, + required this.listProduct, + required this.totalInvest, + }); + + @override + State createState() => _TotalPaymentViewState(); +} + +class _TotalPaymentViewState extends State { + bool isAgreement = false; @override Widget build(BuildContext context) { - return Container( decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(16) + color: Colors.white, + borderRadius: BorderRadius.circular(16) ), child: Column( mainAxisSize: MainAxisSize.min, @@ -25,7 +37,7 @@ class ResultTotalProduct extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text('Your Investment Today', + const Text('Your Investment Today', style: TextStyle( color: ColorPalette.slate800, fontWeight: FontWeight.w600, @@ -33,92 +45,92 @@ class ResultTotalProduct extends StatelessWidget { ), ), GestureDetector( - onTap: () => Navigator.pop(context), - child: Icon(Icons.close_rounded) + onTap: () => Navigator.pop(context), + child: const Icon(Icons.close_rounded) ) ], ), ), - ...listProduct.asMap().entries.map((e) { + ...widget.listProduct.asMap().entries.map((e) { return Container( - padding: EdgeInsets.only(left: 16, right: 24, bottom: 16, top: 16), + padding: const EdgeInsets.only(left: 16, right: 24, bottom: 16, top: 16), decoration: BoxDecoration( - border: Border( - left: BorderSide( - color: ColorPalette.investTypeColor[e.value.type]!, - width: 8, + border: Border( + left: BorderSide( + width: 8, + color: ColorPalette.investTypeColor[e.value.type]! + ) ) - ) ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( - flex: 5, - child: Text(e.value.name, - style: TextStyle( - color: ColorPalette.slate400, - fontWeight: FontWeight.w600, - fontSize: 16 - ), - ) + flex: 5, + child: Text(e.value.name ?? '', + style: const TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ) ), Expanded( - flex: 7, - child: Text( - NumberFormatter.numberCurrency(totalInvest / e.value.totalPercent, 'Rp ', 'id_ID'), - textAlign: TextAlign.end, - style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 18, - color: ColorPalette.slate800 - ), - ) + flex: 7, + child: Text( + NumberFormatter.numberCurrency(widget.totalInvest * e.value.totalPercent!, 'Rp ', 'id_ID'), + textAlign: TextAlign.end, + style: const TextStyle( + fontWeight: FontWeight.w700, + fontSize: 18, + color: ColorPalette.slate800 + ), + ) ) ], ), ); }).toList(), - SizedBox(height: 16), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 24), + const SizedBox(height: 16), + const Padding( + padding: EdgeInsets.symmetric(horizontal: 24), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text('Purchase Commission', - style: TextStyle( - color: ColorPalette.slate400, - fontWeight: FontWeight.w600, - fontSize: 16 - ), - ), - Text('Free', - style: TextStyle( - color: ColorPalette.primary, - fontSize: 18, - fontWeight: FontWeight.w700 - ), - ) - ], - ), - ), - SizedBox(height: 16,), - Container( - color: ColorPalette.slate200.withOpacity(0.5), - padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('Total', style: TextStyle( color: ColorPalette.slate400, fontWeight: FontWeight.w600, fontSize: 16 ), ), - Text(NumberFormatter.numberCurrency(totalInvest, 'Rp ', 'id_ID'), - textAlign: TextAlign.end, + Text('Free', style: TextStyle( + color: ColorPalette.primary, + fontSize: 18, + fontWeight: FontWeight.w700 + ), + ) + ], + ), + ), + const SizedBox(height: 16,), + Container( + color: ColorPalette.slate200.withOpacity(0.5), + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text('Total', + style: TextStyle( + color: ColorPalette.slate400, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ), + Text(NumberFormatter.numberCurrency(widget.totalInvest, 'Rp ', 'id_ID'), + textAlign: TextAlign.end, + style: const TextStyle( fontWeight: FontWeight.w700, fontSize: 18, color: ColorPalette.slate800 @@ -133,16 +145,16 @@ class ResultTotalProduct extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text('Total Payment', + const Text('Total Payment', style: TextStyle( color: ColorPalette.slate400, fontWeight: FontWeight.w600, fontSize: 16 ), ), - Text(NumberFormatter.numberCurrency(totalInvest, 'Rp ', 'id_ID'), + Text(NumberFormatter.numberCurrency(widget.totalInvest, 'Rp ', 'id_ID'), textAlign: TextAlign.end, - style: TextStyle( + style: const TextStyle( fontWeight: FontWeight.w700, fontSize: 18, color: ColorPalette.slate800 @@ -152,13 +164,15 @@ class ResultTotalProduct extends StatelessWidget { ), ), ButtonView( - disabled: true, + disabled: !isAgreement, name: 'Subscribe Now', onPressed: () { - + routePush(context, page: PaymentMethodView( + totalInvest: widget.totalInvest, + )); }, disabledBgColor: ColorPalette.slate200.withOpacity(0.5), - textColor: ColorPalette.slate400, + textColor: isAgreement ? Colors.white : ColorPalette.slate400, textWeight: FontWeight.w700, textSize: 20, backgroundColor: ColorPalette.primary, @@ -169,29 +183,48 @@ class ResultTotalProduct extends StatelessWidget { } Widget buttonAgreement() { + bool isAgree = isAgreement; return Padding( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox( - height: 24, - width: 24, - child: Radio( - value: false, - groupValue: false, - onChanged: (value) { - - }, - activeColor: ColorPalette.primary, + GestureDetector( + onTap: () { + setState(() { + isAgreement = !isAgreement; + }); + }, + child: AnimatedContainer( + margin: const EdgeInsets.only(top: 4), + duration: const Duration(milliseconds: 200), + height: 16, + width: 16, + padding: const EdgeInsets.all(1), + alignment: Alignment.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: isAgree ? ColorPalette.primary : ColorPalette.slate200 + ) + ), + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + child: Container( + decoration: BoxDecoration( + color: isAgree ? ColorPalette.primary : ColorPalette.white, + shape: BoxShape.circle + ), + ), + ), ), ), - SizedBox(width: 12,), + const SizedBox(width: 12,), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('I agree to buy the mutual fund on this page and have read and agreed to all the contents of the Prospectus and summary information and understand the risks of my investment decision.', + const Text('I agree to buy the mutual fund on this page and have read and agreed to all the contents of the Prospectus and summary information and understand the risks of my investment decision.', style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, @@ -202,7 +235,7 @@ class ResultTotalProduct extends StatelessWidget { onTap: () { }, - child: Text('Read More', + child: const Text('Read More', style: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, @@ -218,4 +251,4 @@ class ResultTotalProduct extends StatelessWidget { ), ); } -} +} \ No newline at end of file diff --git a/lib/application/component/success_view.dart b/lib/application/component/success_view.dart new file mode 100644 index 0000000..7541243 --- /dev/null +++ b/lib/application/component/success_view.dart @@ -0,0 +1,52 @@ +import 'package:cims_apps/application/component/button/button_view.dart'; +import 'package:cims_apps/application/component/image/image_view.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:flutter/material.dart'; + +class SuccessView extends StatelessWidget { + final String img; + final String textTitle; + final Widget? subtitle; + final void Function() nextRoute; + const SuccessView({super.key, + required this.img, + required this.textTitle, + required this.subtitle, + required this.nextRoute + }); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ImageView(image: img, width: SizeConfig.width * .8,), + Text(textTitle, + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 28, + ), + ), + subtitle ?? SizedBox() + ], + ), + ), + bottomNavigationBar: Container( + padding: EdgeInsets.all(24), + height: 110, + width: SizeConfig.width, + child: ButtonView( + name: 'Done', + onPressed: nextRoute, + marginVertical: 0, + heightWrapContent: true, + width: SizeConfig.width, + textSize: 20, + contentPadding: EdgeInsets.symmetric(vertical: 12), + ), + ), + ); + } +} diff --git a/lib/application/component/text_form/text_form_view.dart b/lib/application/component/text_form/text_form_view.dart index 6bf6db6..77a0340 100644 --- a/lib/application/component/text_form/text_form_view.dart +++ b/lib/application/component/text_form/text_form_view.dart @@ -5,6 +5,7 @@ import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart'; class TextFormView extends StatelessWidget { final String name; + final double nameSize; final String? helperText; final String? initialValue; final VoidCallback? onTap; @@ -40,6 +41,7 @@ class TextFormView extends StatelessWidget { TextFormView( {Key? key, required this.name, + this.nameSize = 16, this.helperText, this.onTap, this.fontColorDisabled, @@ -97,17 +99,17 @@ class TextFormView extends StatelessWidget { children: [ Text( name, - style: const TextStyle( - fontSize: 16, + style: TextStyle( + fontSize: nameSize, fontWeight: FontWeight.w600, color: ColorPalette.slate800, ), ), suffixLable ?? - const Text( + Text( "", style: TextStyle( - fontSize: 16, + fontSize: nameSize, color: Colors.red, ), ), diff --git a/lib/application/theme/color_palette.dart b/lib/application/theme/color_palette.dart index 22711ea..992d6d5 100644 --- a/lib/application/theme/color_palette.dart +++ b/lib/application/theme/color_palette.dart @@ -75,6 +75,7 @@ class ColorPalette { static const Color backgroundBlueLight = Color(0xFFEBF3FD); static const Color blue50 = Color(0xFFEFF6FF); static const Color blue200 = Color(0xFFBFDBFE); + static const Color blue900 = Color(0xFF1E3A8A); static const Color slate50 = Color(0xFFF8FAFC); static const Color slate200 = Color(0xFFE2E8F0); static const Color slate300 = Color(0xFFCBD5E1); diff --git a/lib/features/auth/login/view/password_view.dart b/lib/features/auth/login/view/password_view.dart index a5ea828..5f6906a 100644 --- a/lib/features/auth/login/view/password_view.dart +++ b/lib/features/auth/login/view/password_view.dart @@ -65,6 +65,7 @@ class PasswordView extends StatelessWidget { name: 'Confirm', heightWrapContent: true, width: SizeConfig.width, + textSize: 18, marginVertical: 0, contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 12), onPressed: nextStep, diff --git a/lib/features/bottom_navigation_view.dart b/lib/features/bottom_navigation_view.dart index 46cfca6..fdd1da2 100644 --- a/lib/features/bottom_navigation_view.dart +++ b/lib/features/bottom_navigation_view.dart @@ -50,28 +50,25 @@ class _BottomNavigationViewState extends State { ), ]; - return ChangeNotifierProvider( - create: (context) => PlanViewModel(), - child: Scaffold( - body: listWidget[_selectedIndex], - bottomNavigationBar: Padding( - padding: const EdgeInsets.symmetric(vertical: 12), - child: BottomNavigationBar( - elevation: 0, - onTap: (value) { - setState(() { - _selectedIndex = value; - }); - }, - currentIndex: _selectedIndex, - items: listNavigation, - type: BottomNavigationBarType.fixed, - showUnselectedLabels: true, - selectedItemColor: ColorPalette.primary, - unselectedItemColor: Colors.black, - selectedLabelStyle: const TextStyle(color: ColorPalette.primary), - unselectedLabelStyle: const TextStyle(color: Colors.black), - ), + return Scaffold( + body: listWidget[_selectedIndex], + bottomNavigationBar: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: BottomNavigationBar( + elevation: 0, + onTap: (value) { + setState(() { + _selectedIndex = value; + }); + }, + currentIndex: _selectedIndex, + items: listNavigation, + type: BottomNavigationBarType.fixed, + showUnselectedLabels: true, + selectedItemColor: ColorPalette.primary, + unselectedItemColor: Colors.black, + selectedLabelStyle: const TextStyle(color: ColorPalette.primary), + unselectedLabelStyle: const TextStyle(color: Colors.black), ), ), ); diff --git a/lib/features/dashboard/dashboard_account/view/homepage/homepage_view.dart b/lib/features/dashboard/dashboard_account/view/homepage/homepage_view.dart index 0e81a6d..463669b 100644 --- a/lib/features/dashboard/dashboard_account/view/homepage/homepage_view.dart +++ b/lib/features/dashboard/dashboard_account/view/homepage/homepage_view.dart @@ -228,7 +228,7 @@ class _HomeViewState extends State { children: listPortofolioType.asMap().entries.map((e) { return GestureDetector( onTap: () { - routePush(context, page: InvestTypeView(e.value.name)); + routePush(context, page: InvestTypeView(title: e.value.name)); }, child: Container( color: Colors.white, diff --git a/lib/features/dashboard/dashboard_account/view/invest_type/invest_type_view.dart b/lib/features/dashboard/dashboard_account/view/invest_type/invest_type_view.dart index 0ea8805..ea362ab 100644 --- a/lib/features/dashboard/dashboard_account/view/invest_type/invest_type_view.dart +++ b/lib/features/dashboard/dashboard_account/view/invest_type/invest_type_view.dart @@ -6,21 +6,14 @@ import 'package:cims_apps/application/theme/color_palette.dart'; import 'package:cims_apps/core/route/route.dart'; import 'package:cims_apps/core/utils/number_formatter.dart'; import 'package:cims_apps/core/utils/size_config.dart'; -import 'package:cims_apps/features/dashboard/dashboard_account/view/product/product_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view/product_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; import 'package:flutter/material.dart'; - -class Product { - String name; - double yield; - double priceUnit; - double funds; - - Product(this.name, this.yield, this.priceUnit, this.funds); -} +import 'package:provider/provider.dart'; class InvestTypeView extends StatefulWidget { final String title; - const InvestTypeView(this.title, {super.key}); + const InvestTypeView({super.key, required this.title}); @override State createState() => _InvestTypeViewState(); @@ -29,71 +22,89 @@ class InvestTypeView extends StatefulWidget { class _InvestTypeViewState extends State { List listProduct = [ - Product('Gemilang Dana Kas Maxima', 8.17, 2600.79, 6300000), - Product('Gemilang Dana Likuid', 6.42, 1600.79, 2340000), - Product('Gemilang Income Fund', 8.17, 2600.79, 6300000) + Product(name: 'Gemilang Dana Kas Maxima', type: '', yield: 8.17, priceUnit: 2600.79, funds: 6300000), + Product(name: 'Gemilang Dana Likuid', type: '', yield: 6.42, priceUnit: 1600.79, funds: 2340000), + Product(name: 'Gemilang Income Fund', type: '', yield: 8.17, priceUnit: 2600.79, funds: 6300000) ]; + + @override + void initState() { + // TODO: implement initState + super.initState(); + listProduct = listProduct.map((e) { + e.type = widget.title; + return e; + }).toList(); + } @override Widget build(BuildContext context) { - return Scaffold( - body: SizedBox( - width: SizeConfig.width, - height: SizeConfig.height, - child: Stack( - children: [ - const ImageView(image: PathAssets.imgDashboardAccount), - Column( - children: [ - const SizedBox( - height: 50, - ), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 24), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + return ChangeNotifierProvider( + create: (context) => ProductViewModel(), + child: Consumer( + builder: (context, provider, child) { + return Scaffold( + body: SizedBox( + width: SizeConfig.width, + height: SizeConfig.height, + child: Stack( + children: [ + const ImageView(image: PathAssets.imgDashboardAccount), + Column( children: [ - const BackButtonView(), - TextTitle(title: widget.title, color: Colors.white), - SizedBox( - width: SizeConfig.width * 0.1, - ) + const SizedBox( + height: 50, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const BackButtonView(), + TextTitle(title: widget.title, color: Colors.white), + SizedBox( + width: SizeConfig.width * 0.1, + ) + ], + ), + ), + const SizedBox( + height: 24, + ), + Container( + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + color: Colors.white + ), + child: Column( + children: [ + filters(), + ListView( + shrinkWrap: true, + children: listProduct.asMap().entries.map((e) { + return GestureDetector( + onTap: () { + provider.setSelectedProduct(e.value); + routePush(context, page: ProductView(widget.title)); + }, + child: Padding( + padding: EdgeInsets.only(top: e.key != 0 ? 24 : 0), + child: cardProduct(e.value), + ), + ); + }).toList(), + ) + ], + ), + ), ], - ), - ), - const SizedBox( - height: 24, - ), - Container( - padding: const EdgeInsets.all(24), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(16), - color: Colors.white - ), - child: Column( - children: [ - filters(), - ListView( - shrinkWrap: true, - children: listProduct.asMap().entries.map((e) { - return GestureDetector( - onTap: () { - routePush(context, page: ProductView(widget.title)); - }, - child: Padding( - padding: EdgeInsets.only(top: e.key != 0 ? 24 : 0), - child: cardProduct(e.value), - ), - ); - }).toList(), - ) - ], - ), - ), - ], - ) - ], - ), + ) + ], + ), + ), + ); + } ), ); } @@ -158,7 +169,7 @@ class _InvestTypeViewState extends State { ), Expanded( child: Text( - product.name, + product.name ?? '', style: const TextStyle( fontWeight: FontWeight.bold, fontSize: 18 diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart b/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart index c5caad2..664a044 100644 --- a/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart +++ b/lib/features/dashboard/dashboard_account/view/plan/view/plan_view.dart @@ -1,6 +1,7 @@ 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/goal_investing_view.dart'; +import 'package:cims_apps/application/component/subscribe/goal_investing_view.dart'; +import 'package:cims_apps/application/component/subscribe/input_investment_view.dart'; import 'package:cims_apps/application/component/numeric_pad/numeric_pad.dart'; import 'package:cims_apps/application/component/risk_profile.dart'; import 'package:cims_apps/application/component/text_form/text_form_view.dart'; @@ -22,6 +23,13 @@ class PlanView extends StatefulWidget { class _PlanViewState extends State { TextEditingController inputController = TextEditingController(); + @override + void initState() { + // TODO: implement initState + inputController.text = 'Rp 0'; + super.initState(); + } + @override void dispose() { // TODO: implement dispose @@ -103,101 +111,13 @@ class _PlanViewState extends State { ), ), Divider(color: ColorPalette.slate200, height: 1), - Padding( - padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(text, - style: TextStyle( - fontSize: 20, - fontWeight: FontWeight.w700, - - ), - ), - Row( - children: [ - Icon(Icons.change_circle_outlined, color: ColorPalette.primary, size: 20), - SizedBox(width: 4), - Text('Change', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - color: ColorPalette.primary - ), - ) - ], - ) - ], - ), - TextField( - controller: inputController, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 28, - fontWeight: FontWeight.w600, - color: ColorPalette.slate800 - ), - keyboardType: TextInputType.number, - onChanged: (value) { - value = value.replaceAll('Rp ', '').replaceAll('.', ''); - double parseValue = double.parse(value); - if(value.isNotEmpty){ - inputController.text = NumberFormatter.numberCurrency(parseValue, 'Rp ', 'id_ID', decimalDigits: 0); - }else{ - inputController.text = NumberFormatter.numberCurrency(0, 'Rp ', 'id_ID', decimalDigits: 0); - } - }, - decoration: InputDecoration( - enabledBorder: UnderlineInputBorder( - borderSide: BorderSide( - color: ColorPalette.primary, - width: 2 - ), - ) - ), - ), - SizedBox(height: 12), - Text('Minimum Budget Rp1,000,000', - style: TextStyle( - color: ColorPalette.slate400, - fontSize: 16, - fontWeight: FontWeight.w600 - ), - ), - SizedBox(height: 16), - NumericPad(onNumberSelected: (p0) { - String checkIsZeroInput = inputController.text.replaceAll('Rp ', '').replaceAll(',', ''); - String getNumeric = p0; - if(p0.isNotEmpty){ - if(checkIsZeroInput != '0'){ - getNumeric = checkIsZeroInput + getNumeric; - } - }else{ - getNumeric = checkIsZeroInput.substring(0, checkIsZeroInput.length - 1); - } - String formatNumeric = NumberFormatter.numberCurrency( - double.parse(getNumeric), 'Rp ', 'id_ID', decimalDigits: 0).replaceAll('.', ','); - inputController.text = formatNumeric; - }), - SizedBox(height: 8), - ButtonView( - name: 'Next', - onPressed: () { - Navigator.pop(context); - int formatIntParse = int.parse(inputController.text.replaceAll('Rp ', '').replaceAll(',', '')); - showModalBottomSheet(context: context, builder: (context) => OptionsStartingInvest(totalInvest: formatIntParse)); - }, - width: SizeConfig.width, - heightWrapContent: true, - contentPadding: EdgeInsets.symmetric(vertical: 16), - marginVertical: 0, - ) - ], - ), + InputInvestmentView( + selectedPlan: text, + nextMove: (value) { + Navigator.pop(context); + int formatIntParse = int.parse(value.replaceAll('Rp ', '').replaceAll(',', '')); + showModalBottomSheet(context: context, builder: (context) => OptionsStartingInvest(totalInvest: formatIntParse)); + }, ), ], ), diff --git a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart index 348f751..ad54b8c 100644 --- a/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart +++ b/lib/features/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_options_product.dart @@ -1,17 +1,12 @@ 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/subscribe/total_payment_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/dashboard/dashboard_account/view/plan/view/step_invest_plan/result_total_product.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; import 'package:flutter/material.dart'; -class Product { - String name, type; - double totalPercent; - - Product(this.name, this.type, this.totalPercent); -} class ResultOptionsProduct extends StatelessWidget { final int totalInvest; const ResultOptionsProduct({super.key, required this.totalInvest}); @@ -19,9 +14,9 @@ class ResultOptionsProduct extends StatelessWidget { @override Widget build(BuildContext context) { List listProduct = [ - Product('Gemilang Dana Kas Maxima', 'Money Market', 0.7), - Product('Gemilang Dana Likuid', 'Bonds', 0.2), - Product('Gemilang Kas 2 Kelas A', 'Shares', 0.1) + Product(name: 'Gemilang Dana Kas Maxima', type: 'Money Market', totalPercent: 0.7), + Product(name: 'Gemilang Dana Likuid', type: 'Bonds', totalPercent: 0.2), + Product(name: 'Gemilang Kas 2 Kelas A', type: 'Shares', totalPercent: 0.1) ]; return Container( @@ -44,7 +39,7 @@ class ResultOptionsProduct extends StatelessWidget { color: ColorPalette.slate800 ), ), - const Icon(Icons.close_rounded, color: ColorPalette.slate400) + Icon(Icons.close_rounded, color: ColorPalette.slate400) ], ), const SizedBox(height: 32), @@ -58,8 +53,8 @@ class ResultOptionsProduct extends StatelessWidget { color: Colors.white, border: Border.all(color: ColorPalette.slate200), borderRadius: BorderRadius.circular(12), - boxShadow: [ - const BoxShadow( + boxShadow: const [ + BoxShadow( color: Color(0XFF1E293B0A) ) ] @@ -76,10 +71,10 @@ class ResultOptionsProduct extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(e.value.name, + Text(e.value.name ?? '', style: const TextStyle( - fontWeight: FontWeight.w700, - color: ColorPalette.slate800 + fontWeight: FontWeight.w700, + color: ColorPalette.slate800, ), ), const SizedBox(height: 4,), @@ -90,17 +85,18 @@ class ResultOptionsProduct extends StatelessWidget { color: ColorPalette.investTypeBgColor[e.value.type], borderRadius: BorderRadius.circular(40) ), - child: Text(e.value.type, + child: Text(e.value.type ?? '', style: TextStyle( - color: ColorPalette.investTypeColor[e.value.type], - fontWeight: FontWeight.w600 + color: ColorPalette.investTypeColor[e.value.type], + fontWeight: FontWeight.w600, + fontSize: 12 ), ), ) ], ), ), - Text('${(e.value.totalPercent * 100).toInt()} %', + Text('${(e.value.totalPercent! * 100).toInt()} %', style: const TextStyle( fontWeight: FontWeight.w700, fontSize: 16, @@ -135,11 +131,14 @@ class ResultOptionsProduct extends StatelessWidget { ButtonView( name: 'Next', onPressed: () { - Navigator.pop(context); showModalBottomSheet( context: context, isScrollControlled: true, - builder: (context) => ResultTotalProduct(listProduct: listProduct, totalInvest: totalInvest) + builder: (context) => + TotalPaymentView( + listProduct: listProduct, + totalInvest: totalInvest, + ) ); }, width: SizeConfig.width, diff --git a/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart b/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart index 634e624..2409e63 100644 --- a/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart +++ b/lib/features/dashboard/dashboard_account/view/plan/view_model/plan_view_model.dart @@ -1,11 +1,6 @@ - +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; import 'package:flutter/material.dart'; class PlanViewModel extends ChangeNotifier { - bool isAgreement = false; - - void setAgreement() { - isAgreement = !isAgreement; - notifyListeners(); - } + List listProduct = []; } \ No newline at end of file diff --git a/lib/features/dashboard/dashboard_account/view/product/product_chart_view.dart b/lib/features/dashboard/dashboard_account/view/product/view/product_chart_view.dart similarity index 100% rename from lib/features/dashboard/dashboard_account/view/product/product_chart_view.dart rename to lib/features/dashboard/dashboard_account/view/product/view/product_chart_view.dart diff --git a/lib/features/dashboard/dashboard_account/view/product/product_view.dart b/lib/features/dashboard/dashboard_account/view/product/view/product_view.dart similarity index 90% rename from lib/features/dashboard/dashboard_account/view/product/product_view.dart rename to lib/features/dashboard/dashboard_account/view/product/view/product_view.dart index 3c30642..40438e1 100644 --- a/lib/features/dashboard/dashboard_account/view/product/product_view.dart +++ b/lib/features/dashboard/dashboard_account/view/product/view/product_view.dart @@ -9,9 +9,12 @@ import 'package:cims_apps/application/component/text_title/text_title.dart'; import 'package:cims_apps/application/theme/color_palette.dart'; import 'package:cims_apps/core/utils/number_formatter.dart'; import 'package:cims_apps/core/utils/size_config.dart'; -import 'package:cims_apps/features/dashboard/dashboard_account/view/product/product_chart_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view/product_chart_view.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view/step_subscribe/select_goal_investing.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; import 'package:flutter/material.dart'; import 'package:group_button/group_button.dart'; +import 'package:provider/provider.dart'; class Time { int value; @@ -97,58 +100,65 @@ class _ProductViewState extends State { @override Widget build(BuildContext context) { - return Scaffold( - body: SizedBox( - child: Stack( - children: [ - const ImageView(image: PathAssets.imgDashboardAccount), - Column( - children: [ - const SizedBox( - height: 50, - ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 24), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - BackButtonView(), - Wrap( - spacing: 12, - children: [ - Icon(Icons.search_rounded, color: ColorPalette.blue200, size: 32), - Icon(Icons.file_download_outlined, color: ColorPalette.blue200, size: 32), - Icon(Icons.star_outline_rounded, color: ColorPalette.blue200, size: 32) - ], - ) - ], + return ChangeNotifierProvider( + create: (context) => ProductViewModel(), + child: Scaffold( + body: SizedBox( + child: Stack( + children: [ + const ImageView(image: PathAssets.imgDashboardAccount), + Column( + children: [ + const SizedBox( + height: 50, ), - ), - const SizedBox( - height: 24, - ), - headContainer(), - const SizedBox( - height: 24, - ), - Expanded( - child: contentContainer() - ) - ], - ) - ], + const Padding( + padding: EdgeInsets.symmetric(horizontal: 24), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + BackButtonView(), + Wrap( + spacing: 12, + children: [ + Icon(Icons.search_rounded, color: ColorPalette.blue200, size: 32), + Icon(Icons.file_download_outlined, color: ColorPalette.blue200, size: 32), + Icon(Icons.star_outline_rounded, color: ColorPalette.blue200, size: 32) + ], + ) + ], + ), + ), + const SizedBox( + height: 24, + ), + headContainer(), + const SizedBox( + height: 24, + ), + Expanded( + child: contentContainer() + ) + ], + ) + ], + ), ), - ), - bottomNavigationBar: Container( - height: SizeConfig.height * .1, - padding: const EdgeInsets.symmetric(horizontal: 24), - child: ButtonView( - name: 'Buy', - onPressed: () { - - }, - height: SizeConfig.height * 0.06, - marginVertical: 16, + bottomNavigationBar: Container( + height: SizeConfig.height * .1, + padding: const EdgeInsets.symmetric(horizontal: 24), + child: ButtonView( + name: 'Subscribe', + onPressed: () { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) => SelectGoalInvesting(), + ); + }, + height: SizeConfig.height * 0.06, + marginVertical: 16, + ), ), ), ); @@ -581,18 +591,10 @@ class _ProductViewState extends State { }, selectedMachineType ), - const Padding( - padding: EdgeInsets.only(top: 16, bottom: 8), - child: Text( - "Today's Investment Estimated Value", - style: TextStyle( - fontWeight: FontWeight.w600, - color: ColorPalette.slate800 - ), - ), - ), + SizedBox(height: 16), TextFormView( - name: '', + name: "Today's Investment Estimated Value", + nameSize: 14, ctrl: machineController, keyboardType: TextInputType.number, contentPadding: EdgeInsets.all(12), diff --git a/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/payment_method_view.dart b/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/payment_method_view.dart new file mode 100644 index 0000000..5b93729 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/payment_method_view.dart @@ -0,0 +1,282 @@ +import 'dart:ffi'; + +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/modal_redirect_app.dart'; +import 'package:cims_apps/application/component/success_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/number_formatter.dart'; +import 'package:cims_apps/core/utils/size_config.dart'; +import 'package:cims_apps/features/bottom_navigation_view.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class Payment { + String name; + int fee; + double? discount; + + Payment({required this.name, required this.fee, this.discount = 1}); +} + +class PaymentMethodView extends StatefulWidget { + final int totalInvest; + const PaymentMethodView({super.key, required this.totalInvest }); + + @override + State createState() => _PaymentMethodViewState(); +} + +class _PaymentMethodViewState extends State { + int selectedPayment = 0; + Payment currentPayment = Payment(name: 'Wallet Pay', fee: 2500); + List listInstantPayment = [ + Payment(name: 'Wallet Pay', fee: 2500), + Payment(name: 'Link Start', fee: 2500), + Payment(name: 'Shopping Pay', fee: 2500, discount: 0.5), + Payment(name: 'Fund', fee: 2500, discount: 0.2) + ]; + + List listTransferBank = [ + Payment(name: 'BCA', fee: 2500), + Payment(name: 'Bank Republik Indonesia', fee: 2500) + ]; + + @override + Widget build(BuildContext context) { + + return Scaffold( + appBar: const CustomAppBar( + height: 70, + title: 'Payment Method' + ), + body: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 8), + child: Column( + children: [ + segmentTitle(Icons.bolt_rounded, 'Instant Payment'), + Wrap( + runSpacing: 16, + children: listInstantPayment.asMap().entries.map((e) { + return cardPayment(e.value, e.key); + }).toList(), + ), + const SizedBox(height: 8), + segmentTitle(Icons.account_balance_outlined, 'Transfer Bank'), + Wrap( + runSpacing: 16, + children: listTransferBank.asMap().entries.map((e) { + return cardPayment(e.value, e.key + (listInstantPayment.length)); + }).toList(), + ), + SizedBox(height: 16,) + ], + ), + ), + bottomNavigationBar: Container( + padding: const EdgeInsets.all(24), + child: segmentBottom(currentPayment) + ), + ); + } + + Widget segmentTitle(IconData? icon, String title) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Row( + children: [ + Icon(icon, color: ColorPalette.primary), + const SizedBox(width: 8), + Text(title, + style: const TextStyle( + color: ColorPalette.slate800, + fontWeight: FontWeight.w600, + fontSize: 16 + ), + ) + ], + ), + ); + } + + Widget cardPayment(Payment value, int index) { + return GestureDetector( + onTap: () { + setState(() { + selectedPayment = index; + currentPayment = value; + }); + }, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(14), + border: Border.all(color: selectedPayment == index ? ColorPalette.primary : ColorPalette.slate200) + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(value.name, + style: const TextStyle( + fontSize: 16 + ), + ), + RichText( + text: TextSpan( + text: 'Payment fee ', + style: const TextStyle( + fontFamily: 'Manrope', + color: ColorPalette.slate400, + ), + children: [ + TextSpan( + text: '${NumberFormatter.numberCurrency(value.fee, 'Rp ', 'id_ID', decimalDigits: 0)} ', + style: TextStyle( + decoration: value.discount != 1 ? TextDecoration.lineThrough : TextDecoration.none, + fontFamily: 'Manrope', + color: ColorPalette.slate400, + ), + ), + if(value.discount != 1)...[ + TextSpan( + text: value.discount == 0 ? 'Free' : NumberFormatter.numberCurrency(value.fee * value.discount!, 'Rp ', 'id_ID', decimalDigits: 0), + style: const TextStyle( + fontFamily: 'Manrope', + color: ColorPalette.primary, + ), + ) + ] + ] + ) + ) + ], + ) + ], + ), + AnimatedContainer( + duration: const Duration(milliseconds: 200), + width: 16, + height: 16, + alignment: Alignment.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: selectedPayment == index ? ColorPalette.primary : Colors.white, + border: Border.all(color: selectedPayment == index ? ColorPalette.primary : ColorPalette.slate200, width: 1.5) + ), + child: const Icon(Icons.done_rounded, color: Colors.white, size: 12), + ) + ], + ) + ], + ), + ), + ); + } + + Widget segmentBottom(Payment currentPayment) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + rowTotal('Total Invest', widget.totalInvest), + rowTotal('Payment Fee', (currentPayment.fee * currentPayment.discount!).toInt()), + Row( + children: [ + Expanded(child: Divider(color: ColorPalette.slate200, height: 1,)), + Icon(Icons.add, size: 10,) + ], + ), + rowTotal('Total Payment', widget.totalInvest + (currentPayment.fee * currentPayment.discount!).toInt()), + SizedBox(height: 24), + ButtonView( + name: 'Buy', + textSize: 18, + marginVertical: 0, + width: SizeConfig.width, + heightWrapContent: true, + contentPadding: EdgeInsets.symmetric(vertical: 16), + onPressed: () { + List redirect = ['Shopping Pay']; + if(redirect.contains(currentPayment.name)){ + showModalBottomSheet( + context: context, + builder: (context) { + return ModalRedirectApp(value: currentPayment.name); + }, + ); + } + routePush(context, page: SuccessView( + img: PathAssets.imgPaymentSuccess, + textTitle: 'Payment Success!', + subtitle: RichText( + text: TextSpan( + text: 'Payment With ', + style: TextStyle( + fontFamily: 'Manrope', + fontWeight: FontWeight.w600, + fontSize: 16, + color: ColorPalette.slate500 + ), + children: [ + TextSpan( + text: currentPayment.name, + style: TextStyle( + fontFamily: 'Manrope', + fontWeight: FontWeight.w700, + fontSize: 16, + color: ColorPalette.slate800 + ) + ), + TextSpan( + text: ' successful', + style: TextStyle( + fontFamily: 'Manrope', + fontWeight: FontWeight.w600, + fontSize: 16, + color: ColorPalette.slate500 + ) + ) + ] + ) + ), + nextRoute: () { + routePush(context, page: BottomNavigationView(), routeType: RouteType.pushRemove); + }, + )); + }, + ) + ], + ); + } + + Widget rowTotal(String title, int value) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(title, + style: const TextStyle( + fontWeight: FontWeight.w600, + color: ColorPalette.slate500, + fontSize: 16 + ), + ), + Text(NumberFormatter.numberCurrency(value, 'Rp', 'id_ID', decimalDigits: 0), + style: const TextStyle( + fontWeight: FontWeight.w700, + color: ColorPalette.slate800, + fontSize: 16 + ), + ) + ], + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/select_goal_investing.dart b/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/select_goal_investing.dart new file mode 100644 index 0000000..5b3d081 --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/product/view/step_subscribe/select_goal_investing.dart @@ -0,0 +1,83 @@ +import 'package:cims_apps/application/component/subscribe/goal_investing_view.dart'; +import 'package:cims_apps/application/component/subscribe/input_investment_view.dart'; +import 'package:cims_apps/application/component/subscribe/total_payment_view.dart'; +import 'package:cims_apps/application/theme/color_palette.dart'; +import 'package:cims_apps/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class SelectGoalInvesting extends StatelessWidget { + const SelectGoalInvesting({super.key}); + + @override + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider(create: (context) => ProductViewModel(),) + ], + child: Consumer( + builder: (context, provider, child) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16) + ), + padding: EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text('Your Goal in Investing', + style: TextStyle( + fontWeight: FontWeight.w700, + color: ColorPalette.slate800, + fontSize: 18 + ), + ), + GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Icon(Icons.close_rounded, color: ColorPalette.slate400) + ) + ], + ), + SizedBox(height: 32), + GoalInvestingView( + onListSelected: (p0) { + Navigator.pop(context); + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) { + return InputInvestmentView( + selectedPlan: p0, + nextMove: (value) { + Navigator.pop(context); + int formatIntParse = int.parse(value.replaceAll('Rp ', '').replaceAll(',', '')); + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) => + TotalPaymentView( + listProduct: [ + provider.getSelectedProduct + ], + totalInvest: formatIntParse, + ) + ); + }, + ); + }, + ); + }, + ) + ], + ), + ); + } + ), + ); + } +} diff --git a/lib/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart b/lib/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart new file mode 100644 index 0000000..e7fddea --- /dev/null +++ b/lib/features/dashboard/dashboard_account/view/product/view_model/product_view_model.dart @@ -0,0 +1,27 @@ + +import 'package:flutter/material.dart'; + +class Product { + String? name, type; + double? yield; + double? priceUnit, funds, totalPercent; + + Product({this.name, this.type, this.yield, this.priceUnit, this.funds, this.totalPercent = 1}); +} + +class ProductViewModel extends ChangeNotifier { + static Product selectedProduct = Product(); + Product get getSelectedProduct => selectedProduct; + + double totalInvestment = 0; + + void setSelectedProduct(Product product) { + selectedProduct = product; + notifyListeners(); + } + + void setTotalInvestment(double value) { + totalInvestment = value; + notifyListeners(); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 2755a41..06ccb22 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -39,6 +39,10 @@ class MyApp extends StatelessWidget { secondary: const Color(0xFFFECDA6), onBackground: const Color(0xFFA9A9A9), ), + bottomSheetTheme: BottomSheetThemeData( + backgroundColor: Colors.white, + surfaceTintColor: Colors.white + ) // useMaterial3: true, ), initialRoute: initialRoute,