From 6f5d3ccca834bc63caf9d64bf4726ace646c5e0a Mon Sep 17 00:00:00 2001 From: Dian Bayu Nugroho Date: Tue, 5 Mar 2024 15:25:44 +0700 Subject: [PATCH] feat: transaction --- assets/icons/icon-education.png | Bin 0 -> 3884 bytes assets/icons/icon-fund.png | Bin 0 -> 3384 bytes assets/icons/icon-gadget-outline.png | Bin 0 -> 2776 bytes assets/icons/icon-home.png | Bin 0 -> 2753 bytes assets/icons/icon-shop.png | Bin 0 -> 3745 bytes assets/images/img-empty-transaction.png | Bin 0 -> 71926 bytes lib/application/assets/path_assets.dart | 26 +++- .../card_transaction_view.dart | 100 +++++++++++++++ .../empty_card_transaction.dart | 44 +++++++ lib/core/utils/string_utils.dart | 10 ++ .../transaction/view/cancel_view.dart | 35 ++++++ lib/features/transaction/view/done_view.dart | 37 ++++++ .../transaction/view/onprocess_view.dart | 34 +++++ .../transaction/view/transaction_view.dart | 118 +++++++++++++++++- .../transaction/view/waiting_view.dart | 42 +++++++ .../viewmodel/transaction_viewmodel.dart | 8 ++ lib/main.dart | 114 +++++++++-------- pubspec.lock | 8 ++ pubspec.yaml | 1 + 19 files changed, 509 insertions(+), 68 deletions(-) create mode 100644 assets/icons/icon-education.png create mode 100644 assets/icons/icon-fund.png create mode 100644 assets/icons/icon-gadget-outline.png create mode 100644 assets/icons/icon-home.png create mode 100644 assets/icons/icon-shop.png create mode 100644 assets/images/img-empty-transaction.png create mode 100644 lib/application/component/card_transaction/card_transaction_view.dart create mode 100644 lib/application/component/card_transaction/empty_card_transaction.dart create mode 100644 lib/features/transaction/view/cancel_view.dart create mode 100644 lib/features/transaction/view/done_view.dart create mode 100644 lib/features/transaction/view/onprocess_view.dart create mode 100644 lib/features/transaction/view/waiting_view.dart create mode 100644 lib/features/transaction/viewmodel/transaction_viewmodel.dart diff --git a/assets/icons/icon-education.png b/assets/icons/icon-education.png new file mode 100644 index 0000000000000000000000000000000000000000..8d304f04df10a465b6d1c5f3c5f55cf0edd133d9 GIT binary patch literal 3884 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 E0EqKs)c^nh literal 0 HcmV?d00001 diff --git a/assets/icons/icon-gadget-outline.png b/assets/icons/icon-gadget-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..5cef4cee583c7cd5dc7e8a5a13ed7cd6dd7164b3 GIT binary patch literal 2776 zcmeHJ=RX??7mk*yxJ0cER9k9=>sm32P-5>bs6@?c3$@2JD_U)>qC~Wf9hBIslvgR0 zs-X5LsS%?_%;a^yynn^};W^Lmob&Dcp6C3YR5KG@HsCEF003aq*VDGR;Ie;l^~yyJ zHpCGwh$TSJ9t8kM8vY9goLWx##gGAIq5BX}{gr?1qG9yVG}Z(FKD=N(LoxvXKwo`r zO{*{l%8ap()dUao4r-o{Z+ShZBm-_<44*j$2i)x)-2G9x>4+&YJ*!R8(`1P3Q1Df|!u4oXAz-sseB%`q55V zw>gryE8_D>$J_cFL}y0CD~tZ&zvry09DdpbC>P~b(kA%U9|C#D?UfkTk zb!G*VJKgIWVA5x2Nber;D~XFCNx>o)WBy~VN<#9iuMP+|`lgx4HE!10KytQ$T?hX< zW8m=n{CJDS+smHEsS4XYEz4nI7x|^)mkU$JYifU{dizM!^7l!t7h8M%*J1e>((1On zepAOM+#$iR#rIFjpn~~jv0Pswq?3zrf9w60ke}53G5je?K5Ci8>2$N4=O0OO3ok74 z(cdMs*^LYVn-vOWYE(XB>2zwB*;;kG$ib3-s2E%yJUt`A)b%mB2Fju?>&woz>5Ze= zj+>8qj{NZV(}}kd@eM1A`1x%OVd<}P-vz6VL{VpK*{+*F++tRp&lkTe+!9Xm zRxwQ1mAJ;xad>R0a^6iiNW;Q+6`HfN%AeOn@K2aaXRgF6mxjA6IEd2ELIR9^O7%lj z;L}}7Dt{**=+qP#?ly!eHj6wl4as_k3C&t*)77%Qt@yK`o)eS#h}OGxT&AT$nVfmF zg!J(Y%fS-9#1=KQqJtn>^rb8M9AAHjl{Iyt;hW=OkL8!Vk&!$Njg_b6USL>Z^|__z3%RufqPD9rHNIEL1xz{E1OlY@hkg+ zMQS*))_U<1iZq1jZUaLRV(G<}BiH$^v|KlpTZRQO`;en zlN_)+ONo>3=7{ zU6p7JiA_)TS1m5rRVQhc3>RP6(9^a$6|2ffh%W}e@Ve0C`dZ`hjZRwPl@kXq#C$}2 zHu9--0@$PDQ_C1}XL-T<;~)o7wt29Rrr_60SMW)W%aO6(5%aU8SB|tp$}e`ZUayyO zju|lVK>;Cyzhd14`X~*vyRmF<6pS=HI=@|r=AR`;H_(Ntx31z##Gq;TDjzwwsUA?r z89SQfSk9cuQAq;cD9M8F_*vRJ-*j+@gZg`cDf#fAgf zEt+1IsC4Q1&4UDq6oDs=?RfsBB5(6C3_Bf9U#pRG4jYteKP-*X4qXTMsbM`O7;R7Qwn#L*_KaT^IY=#fa#lau+qLipzQxDBB zS$$4cHdIY2-8GuS%I>DAo6l-)X=uD;k_7yAN@hx!Lm)&zE&=?quNmFwa3QoA$Mo_799P~NJQ7UF{TqoXNApCIxN$d0; zPIuU}SXZ2(IWYF3B*X+VPkeqkR!R|Wa9mnQAVWtE&ubT(ZJ{VWD`HzFD*9)ut$6WK znLrV_-TiRU7rOan&j|B)JP0!e9GsqRz^mzN zQ_XVs)|Qi?l2_!XOMs3r76e<~?7KAS;Ih;tsPu**7Tp71YAG#E_~TDFuUYk5ciD(| zz&Kz;?X``mO^~vu&HhZ#x=@^TUGPe$)c~HkzHc9bEK4C-?nE^-jfomukr%7Kv5suW zt%{EIbgo@m^_{SxKD$@7e%Bpdv`~fLUqd@^hL*Im8k9S8Y7~0mrMHHf6IO0pk}!Gp z^0V@aYK&&m`8sW~CjPh->k#$Iiy*K<;L;EX$f;lvtvmrB&Cm+GCT4u~mcfmqwVhUF zT-8oDsm=C*0wM(L9o0ETm3CBRq}ULhdu@id%eXgW-x`;J0t&h)^mH6#!}V9jf@^n7 zIz5x4$v5JG;H!;azcjp(C_nxQw*4+L0evs-3A<1GC})L3jDtN&1s`}s)K`?OA!gIv znLl-I92CEW5L%f~nv&ZB3sfbq{+sgjGt+D1uHVnvI-<^BjnY=C(@U;Z)KAXOa2hf2 z*YpdKmQ~i>@a5mn%)GL(P0EUw*x!bK1)f!AM43YG=)Qo2Z|OmLdPJYmFK7LUdTcKO Rr(Fb5fIiGbyZRv_{=f6=IspIx literal 0 HcmV?d00001 diff --git a/assets/icons/icon-home.png b/assets/icons/icon-home.png new file mode 100644 index 0000000000000000000000000000000000000000..04bd1c0b804f850d5ccdf6e33c5663bfe6e2d08e GIT binary patch literal 2753 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 L!rr{j)GP5{$`CPh literal 0 HcmV?d00001 diff --git a/assets/icons/icon-shop.png b/assets/icons/icon-shop.png new file mode 100644 index 0000000000000000000000000000000000000000..6053960d45dc7252f09e8da11b7cdcb67121eb24 GIT binary patch literal 3745 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 LNkvXXu0mjfAl3mL literal 0 HcmV?d00001 diff --git a/assets/images/img-empty-transaction.png b/assets/images/img-empty-transaction.png new file mode 100644 index 0000000000000000000000000000000000000000..f202c5a92f596288aeacce1647667313969a5cfa GIT binary patch literal 71926 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 goalInvestIcon = { 'Education': iconToga, diff --git a/lib/application/component/card_transaction/card_transaction_view.dart b/lib/application/component/card_transaction/card_transaction_view.dart new file mode 100644 index 0000000..cf79d90 --- /dev/null +++ b/lib/application/component/card_transaction/card_transaction_view.dart @@ -0,0 +1,100 @@ +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:flutter/material.dart'; + +class CardTransactionView extends StatelessWidget { + final VoidCallback onTap; + final String iconPath, type, amount, subs, step; + final String? timeTransaction; + const CardTransactionView({ + Key? key, + required this.step, + required this.type, + required this.amount, + required this.iconPath, + required this.subs, + required this.onTap, + this.timeTransaction, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + TextTheme textTheme = Theme.of(context).textTheme; + return GestureDetector( + onTap: onTap, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 16.0), + padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(width: 1, color: ColorPalette.slate200), + borderRadius: const BorderRadius.all(Radius.circular(12)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + width: SizeConfig.width * .4, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + ImageView( + image: iconPath, width: SizeConfig.width * .12), + Padding( + padding: const EdgeInsets.only(left: 8.0), + child: Text( + type, + style: textTheme.headlineSmall, + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.only(top: 16.0), + child: Text( + amount, + style: textTheme.headlineSmall, + ), + ), + ], + )), + SizedBox( + width: SizeConfig.width * .4, + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + height: SizeConfig.height * .08, + child: Text( + subs, + style: const TextStyle(color: ColorPalette.primary), + )), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + step == 'waiting' + ? const Icon(Icons.access_time_sharp, + color: ColorPalette.slate400) + : const SizedBox(), + step == 'waiting' + ? Text(timeTransaction.toString()) + : const SizedBox(), + const Padding( + padding: EdgeInsets.only(left: 16.0), + child: Icon(Icons.arrow_forward_ios), + ), + ], + ), + ], + )), + ], + ), + ), + ); + } +} diff --git a/lib/application/component/card_transaction/empty_card_transaction.dart b/lib/application/component/card_transaction/empty_card_transaction.dart new file mode 100644 index 0000000..af14e03 --- /dev/null +++ b/lib/application/component/card_transaction/empty_card_transaction.dart @@ -0,0 +1,44 @@ +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/core/utils/size_config.dart'; +import 'package:flutter/material.dart'; + +class EmptyCardTransaction extends StatelessWidget { + final VoidCallback onPressedButton; + const EmptyCardTransaction({Key? key, required this.onPressedButton}) + : super(key: key); + + @override + Widget build(BuildContext context) { + TextTheme textTheme = Theme.of(context).textTheme; + return Container( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + ImageView( + image: PathAssets.imgEmptyTransaction, + width: SizeConfig.width * .4, + ), + Text( + 'No Transaction Yet', + style: textTheme.headlineSmall, + ), + Text( + "Let's keep building your investment for even greater financial growth!", + style: textTheme.bodyMedium, + textAlign: TextAlign.center, + ), + ButtonView( + name: 'Investing Now', + width: SizeConfig.width * .5, + onPressed: onPressedButton, + ), + ], + ), + ), + ); + } +} diff --git a/lib/core/utils/string_utils.dart b/lib/core/utils/string_utils.dart index 307fb19..d503567 100644 --- a/lib/core/utils/string_utils.dart +++ b/lib/core/utils/string_utils.dart @@ -1,3 +1,5 @@ +import 'package:intl/intl.dart'; + class StringUtils { static bool emailValidation(String email) { return RegExp( @@ -13,4 +15,12 @@ class StringUtils { return RegExp(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*?[\W_])(?=.{8,})') .hasMatch(password); } + + static String formatTime(DateTime? dateTime) { + if (dateTime != null) { + DateFormat formatter = DateFormat('HH:mm:ss'); + return formatter.format(dateTime); + } + return '--:--:--'; + } } diff --git a/lib/features/transaction/view/cancel_view.dart b/lib/features/transaction/view/cancel_view.dart new file mode 100644 index 0000000..3a5d243 --- /dev/null +++ b/lib/features/transaction/view/cancel_view.dart @@ -0,0 +1,35 @@ +import 'package:cims_apps/application/component/card_transaction/card_transaction_view.dart'; +import 'package:cims_apps/application/component/card_transaction/empty_card_transaction.dart'; +import 'package:cims_apps/features/transaction/viewmodel/transaction_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class CancelView extends StatelessWidget { + const CancelView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: Consumer( + builder: (context, provider, child) => Column( + children: [ + if (provider.listOnProcessTransaction.isEmpty) + EmptyCardTransaction( + onPressedButton: () {}, + ), + ...provider.listOnProcessTransaction.map((e) { + return CardTransactionView( + step: 'cancel', + type: 'type', + amount: 'amount', + iconPath: 'iconPath', + subs: 'subs', + onTap: () {}, + ); + }), + ], + ), + ), + ); + } +} diff --git a/lib/features/transaction/view/done_view.dart b/lib/features/transaction/view/done_view.dart new file mode 100644 index 0000000..808104e --- /dev/null +++ b/lib/features/transaction/view/done_view.dart @@ -0,0 +1,37 @@ +import 'package:cims_apps/application/component/card_transaction/card_transaction_view.dart'; +import 'package:cims_apps/application/component/card_transaction/empty_card_transaction.dart'; +import 'package:cims_apps/features/transaction/viewmodel/transaction_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class DoneView extends StatelessWidget { + const DoneView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: Consumer( + builder: (context, provider, child) { + return Column( + children: [ + if (provider.listOnProcessTransaction.isEmpty) + EmptyCardTransaction( + onPressedButton: () {}, + ), + ...provider.listOnProcessTransaction.map((e) { + return CardTransactionView( + step: 'done', + type: 'type', + amount: 'amount', + iconPath: 'iconPath', + subs: 'subs', + onTap: () {}, + ); + }), + ], + ); + }, + ), + ); + } +} diff --git a/lib/features/transaction/view/onprocess_view.dart b/lib/features/transaction/view/onprocess_view.dart new file mode 100644 index 0000000..fe52771 --- /dev/null +++ b/lib/features/transaction/view/onprocess_view.dart @@ -0,0 +1,34 @@ +import 'package:cims_apps/application/component/card_transaction/card_transaction_view.dart'; +import 'package:cims_apps/application/component/card_transaction/empty_card_transaction.dart'; +import 'package:cims_apps/features/transaction/viewmodel/transaction_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class OnProcessView extends StatelessWidget { + const OnProcessView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: + Consumer(builder: (context, provider, child) { + return Column(children: [ + if (provider.listOnProcessTransaction.isEmpty) + EmptyCardTransaction( + onPressedButton: () {}, + ), + ...provider.listOnProcessTransaction.map((e) { + return CardTransactionView( + step: 'on process', + type: 'type', + amount: 'amount', + iconPath: 'iconPath', + subs: 'subs', + onTap: () {}, + ); + }), + ]); + }), + ); + } +} diff --git a/lib/features/transaction/view/transaction_view.dart b/lib/features/transaction/view/transaction_view.dart index 8a9b14b..c678123 100644 --- a/lib/features/transaction/view/transaction_view.dart +++ b/lib/features/transaction/view/transaction_view.dart @@ -1,14 +1,124 @@ -import 'package:cims_apps/application/component/custom_app_bar/custom_app_bar.dart'; +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:cims_apps/core/utils/size_config.dart'; +import 'package:cims_apps/features/transaction/view/cancel_view.dart'; +import 'package:cims_apps/features/transaction/view/done_view.dart'; +import 'package:cims_apps/features/transaction/view/onprocess_view.dart'; +import 'package:cims_apps/features/transaction/view/waiting_view.dart'; +import 'package:cims_apps/features/transaction/viewmodel/transaction_viewmodel.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_toggle_tab/flutter_toggle_tab.dart'; +import 'package:provider/provider.dart'; class TransactionView extends StatelessWidget { const TransactionView({Key? key}) : super(key: key); @override Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar(height: SizeConfig.height * 0.08, title: 'Transaction'), - ); + List textTabs = const [ + Tab(text: 'Waiting'), + Tab(text: 'On process'), + Tab(text: 'Done'), + Tab(text: 'Cancel'), + ]; + List listTabBarView = const [ + WaitingView(), + OnProcessView(), + DoneView(), + CancelView(), + ]; + + return ChangeNotifierProvider( + create: (context) => TransactionViewModel(), + builder: (context, child) { + return Scaffold( + backgroundColor: ColorPalette.primary, + body: SizedBox( + child: Stack( + children: [ + const ImageView(image: PathAssets.imgDashboardAccount), + Column( + children: [ + SizedBox( + height: SizeConfig.height * .05, + ), + const Center( + child: Text( + 'Transaction', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + color: Colors.white), + ), + ), + SizedBox( + height: SizeConfig.height * .04, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 24), + child: FlutterToggleTab( + height: SizeConfig.height * .065, + width: SizeConfig.width * .2, + marginSelected: const EdgeInsets.all(8.0), + isScroll: false, + selectedTextStyle: const TextStyle( + color: ColorPalette.primary, + fontWeight: FontWeight.w700, + ), + unSelectedTextStyle: const TextStyle( + color: ColorPalette.blackFont, + fontWeight: FontWeight.w700, + ), + unSelectedBackgroundColors: const [ + ColorPalette.blue50 + ], + selectedBackgroundColors: const [ColorPalette.white], + labels: const ['Subscribe', 'Reedem'], + selectedLabelIndex: (p0) {}, + selectedIndex: 0, + ), + ), + Expanded( + child: DefaultTabController( + length: textTabs.length, + child: Container( + color: Colors.transparent, + padding: const EdgeInsets.only(top: 32.0), + child: Container( + margin: const EdgeInsets.only(top: 24), + padding: const EdgeInsets.only(top: 16.0), + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(24), + topRight: Radius.circular(24)), + ), + child: Column( + children: [ + TabBar( + tabs: textTabs, + indicatorColor: Colors.blueAccent, + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 4.0, + ), + child: TabBarView(children: listTabBarView), + )) + ], + ), + ), + ), + )), + ], + ) + ], + ), + ), + ); + }); } } diff --git a/lib/features/transaction/view/waiting_view.dart b/lib/features/transaction/view/waiting_view.dart new file mode 100644 index 0000000..decce6a --- /dev/null +++ b/lib/features/transaction/view/waiting_view.dart @@ -0,0 +1,42 @@ +import 'package:cims_apps/application/assets/path_assets.dart'; +import 'package:cims_apps/application/component/card_transaction/card_transaction_view.dart'; +import 'package:cims_apps/application/component/card_transaction/empty_card_transaction.dart'; +import 'package:cims_apps/core/utils/number_formatter.dart'; +import 'package:cims_apps/core/utils/string_utils.dart'; +import 'package:cims_apps/features/transaction/viewmodel/transaction_viewmodel.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +class WaitingView extends StatelessWidget { + const WaitingView({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: + Consumer(builder: (context, provider, child) { + return Column( + children: [ + provider.listWaitingTransaction.isNotEmpty + ? CardTransactionView( + onTap: () {}, + iconPath: PathAssets.iconEducation, + type: 'Education', + amount: NumberFormatter.numberCurrency( + 6000000, + 'Rp ', + 'id_ID', + decimalDigits: 0, + ), + timeTransaction: StringUtils.formatTime(DateTime.now()), + subs: '3 Subscription', + step: 'waiting') + : EmptyCardTransaction( + onPressedButton: () {}, + ), + ], + ); + }), + ); + } +} diff --git a/lib/features/transaction/viewmodel/transaction_viewmodel.dart b/lib/features/transaction/viewmodel/transaction_viewmodel.dart new file mode 100644 index 0000000..9e5579c --- /dev/null +++ b/lib/features/transaction/viewmodel/transaction_viewmodel.dart @@ -0,0 +1,8 @@ +import 'package:flutter/material.dart'; + +class TransactionViewModel extends ChangeNotifier { + List listWaitingTransaction = [1]; + List listOnProcessTransaction = []; + List listDoneTransaction = []; + List listCancelTransaction = []; +} diff --git a/lib/main.dart b/lib/main.dart index 70c5712..4ccabd7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,68 +20,66 @@ class MyApp extends StatelessWidget { title: 'CIMS', debugShowCheckedModeBanner: false, theme: ThemeData( - appBarTheme: const AppBarTheme( - centerTitle: true, - backgroundColor: Colors.white, - elevation: 1, - foregroundColor: Colors.black, - titleTextStyle: TextStyle( - fontSize: 20, - fontWeight: FontWeight.w700, - fontFamily: 'Manrope', + appBarTheme: const AppBarTheme( + centerTitle: true, + backgroundColor: Colors.white, + elevation: 1, + foregroundColor: Colors.black, + titleTextStyle: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w700, + fontFamily: 'Manrope', + color: ColorPalette.slate800, + )), + fontFamily: 'Manrope', + scaffoldBackgroundColor: Colors.white, + textTheme: const TextTheme( + displaySmall: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, color: ColorPalette.slate800, - )), - fontFamily: 'Manrope', - scaffoldBackgroundColor: Colors.white, - textTheme: const TextTheme( - displaySmall: TextStyle( - fontSize: 14, - fontWeight: FontWeight.w500, - color: ColorPalette.slate800, + ), + displayMedium: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: ColorPalette.slate800, + ), + displayLarge: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800, + ), + bodyMedium: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: ColorPalette.slate500, + ), + bodyLarge: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: ColorPalette.slate500, + ), + headlineSmall: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800, + ), + headlineLarge: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: ColorPalette.slate800, + ), ), - displayMedium: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - color: ColorPalette.slate800, + colorScheme: const ColorScheme.light().copyWith( + primary: const Color(0xff2563EB), + onPrimary: const Color(0xFFFF9130), + secondary: const Color(0xFFFECDA6), + onBackground: const Color(0xFFA9A9A9), ), - displayLarge: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: ColorPalette.slate800, + bottomSheetTheme: const BottomSheetThemeData( + backgroundColor: Colors.white, surfaceTintColor: Colors.white) + // useMaterial3: true, ), - bodyMedium: TextStyle( - fontSize: 14, - fontWeight: FontWeight.w600, - color: ColorPalette.slate500, - ), - bodyLarge: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: ColorPalette.slate500, - ), - headlineSmall: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - color: ColorPalette.slate800, - ), - headlineLarge: TextStyle( - fontSize: 28, - fontWeight: FontWeight.bold, - color: ColorPalette.slate800, - ), - ), - colorScheme: const ColorScheme.light().copyWith( - primary: const Color(0xff2563EB), - onPrimary: const Color(0xFFFF9130), - secondary: const Color(0xFFFECDA6), - onBackground: const Color(0xFFA9A9A9), - ), - bottomSheetTheme: BottomSheetThemeData( - backgroundColor: Colors.white, - surfaceTintColor: Colors.white - ) - // useMaterial3: true, - ), initialRoute: initialRoute, onGenerateRoute: generateRoutes, navigatorObservers: [ diff --git a/pubspec.lock b/pubspec.lock index 446b2ba..29bef45 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -259,6 +259,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_toggle_tab: + dependency: "direct main" + description: + name: flutter_toggle_tab + sha256: "90ad0d050f656df677998825f985637d010117a1793828cd7e6dadada4ecd2c5" + url: "https://pub.dev" + source: hosted + version: "1.4.1" flutter_web_plugins: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index cb05aa4..a267e1f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -53,6 +53,7 @@ dependencies: shared_preferences: ^2.2.2 calendar_date_picker2: ^0.5.3 google_sign_in: ^6.2.1 + flutter_toggle_tab: ^1.4.1