From 88ad1d658404fc166c3270313c941c51a971e210 Mon Sep 17 00:00:00 2001 From: sindhu Date: Wed, 17 Jan 2024 12:34:22 +0700 Subject: [PATCH] step 24 : fix drawer, login bg color --- .../images/logo_sismedika_landscape.png | Bin 0 -> 8173 bytes app_petty_cash/lib/main.dart | 4 +- .../lib/screen/login/login_screen.dart | 22 +- app_petty_cash/lib/widget/custom_drawer.dart | 373 +++++++++++------- .../lib/widget/custom_drawer_v1.dart | 221 +++++++++++ 5 files changed, 474 insertions(+), 146 deletions(-) create mode 100644 app_petty_cash/images/logo_sismedika_landscape.png create mode 100644 app_petty_cash/lib/widget/custom_drawer_v1.dart diff --git a/app_petty_cash/images/logo_sismedika_landscape.png b/app_petty_cash/images/logo_sismedika_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d814aee83c6c1f772812c1f0e878600186a9a8b6 GIT binary patch literal 8173 zcma)>RZtvIuYiFr&f-pS_aciIS=^l#DT@`i0>$0kt+>0pyL*x1?ykibZvQ*~`@Ii2 zIVUrjNpc>N$rq-gBn?C%MuCBW0m{lqsKLO%!u`8zAtC%bY3Nho|0!g98Er=x7*w49 z2rNum2H`&=tfQJV7^Z6K$fUQKC*BCAu50s8y=e>QOj0bvjtb5sw>ZDCQ^w%xBIi8Wkql)ILFyNvD zf&Xu{!-u3g`_MQjf)Cyc@KqPhnPgYP1?h25u4i$%VMxe!hoc}4uZ$w`NgyfQ`!GeL z^u9NEoi<10l!S^W7Id{8d4^jB8`u-WMLfvE4m|kZ&XO)FzM|oVJ1c4U=Rm$c1;EuX z#EbO)?XcOUXGMs()4pH(m8R$;t)dIehVjg8jnTV#V!wPvXPIrTd)0bIM=gbEsFAgQ z@LC<(d?RGQJtsuKKW_HyHQ)k^`YWWb-ZmCb!$#ypiD0WDxe9^V*EdQ(vc$Jpi=kL> zC`)3)WznRb$IXwy|H@HmFlIr8%Qen|za0HxJIv1d7}9`u8;>SVsyB`hlt*g(4KpX%Xix-&Z$13IzeNfZ>xm%%m) z%$nYKp8+T44UnlIe1%a6n*1ALDFua1;v;@jRs z#ofufT(NnZl2T07M{5dAz%0Sz@q+zVnA8$2{QFWpp?I1Rux0DIBEr+`{vYYfv`-es z3>b{^;X8s(!u5%79i(|;p(0KdK_t9;hwWguYnI@hmD9UQ^&SAtr;|W7hvw*M2=c$I z=uSEjpc`LjGs&I5DPk2oea2ivA9+@v5CI|G<0C#I1=%B-?6O!oIc%$b5&1H(p0SIF z)FDif#T7gH8EHpPGIKbILsw#1v8S2o>^j@2QoMMkAW0NoOpCvKGGmnpgJcQx=FVM|pfg>z4YME3 zRviDhv5V%}=(N8T&Tr{rC37XlvBhWXlKJTBU=UMfzvq!rSB`8XI`2<`?WM(jQ3~pZ zz>$<|m)r;=ShwS=q+CJVG!bd*@#&VF2Sv+Pb1*tTEr3c^8)ShV9mZZ7{MUue^{2u=E!f$Pbj z0;&1zF*}aw*Tx?Z@`>c_oA0AQt>0f>%g|i=4U)glsAT?(atzy z+|BC)C9j0bCta)EDrUuTQ(vE}Bb%X-DN}l&adSYhU5o47>bj}t8=gc?E;rPIsa?=B z!-?{4TNXaM^ZaK?cDggrvPFtbROAA=$c3>a?U3Y)*JzGKsLrqVFMc1ESf10c;w!Il zi=o&=9=~oH1udjB*+XGD(uLQuey);TIE?ErIl)^7MLaDmKRpEDz{OWCyTz!)=p(37 za0|2i0p~29qAH#0wmwpql{*51d;uImloKMecxB(k(Y?{3&`xnG^B-mi?x!y|eYXP6 zwi^oj-wbE~I(_b%D21 z=?RZso(!&gV8y^NLi`t73p5k{#OeEPhz z(68+2yRgrusvtWnkwOmtmERu>xV8v-58bjm4tQ-g$E~)@1Ji+mFMl0!?)u0r6m*U6 zA{|?*SHGoqBP4uenIcr$Us`?9hDnFxpg2GcAEB!usHh#6qh60o>duxsgc!i8#kq(_ z@>d(hHDs=t2nQ~;I(lwEC{Sk5c~e2Y?rJ-pN{Y6sOFu-G71-{dTu~hB1u5a`nhW($ z@yUw=+YSPA?Xf9A8Lo;Q)Wa8;)H|X+T16jv!=~k#D$+3UYb-h_dX8sT_=);+qQY7! zME#Q8tr}L^vkR8sr;(lV$#jdGzxzk1VM|^5ODmCm@PiWP1rCiF12e1`GabTH8<;&e zhoSP#l~2p|*Ipur@qoJX$I|`+JcT5LI{WQZ(g+FPF$MAFh+Y&V(B1pX8@pc85)pMZ zBv+fvj*w|nS==MQQGj!`9P>j)p~b^YjC*Bo{xptW2sr?CJ{g@@YPWbo)I|{oLyRP! zXKnx~4X=g59!4Hv#-YxtfjCd?3yX}{x|ZyRIgD~g+ZSdD<(Xxmz||S)E`8T7bj`=@ zX;N>?srScy)fuCqrh16;9X-O-Xj;E;(ndsNpKAl`K+gGY-4r z7*`o*C%FZmIB|ILa7zn`KXAAI_@)Asv3lNLU$x^|naG%$8zK5=H0@^T@gg^+efso8~QLfBc)o@E^^ySmU_4C3ahx>g-ngGpU|CvuOT^}e`Z!YfwbaffSa+N!wCeg zqe>e9Y&h=orpnxoz}kG_Oaj3iH!cPd1>oJSSW!O04($}-&3@Y(}`Tj zUd;HNNBn7%I)MRTVI#g}?ZoY7@&Wwf(eK-ojq*|3FrUHYLx6+&Njdv` zOIGt16oMqnOfh7=db5sr*R*^@RJu{>4CF1)VsjsLpazMW=K*4f#v-xXv20c@=ErXG z<_WT*mtNcsx?%ei#pxoZJj)&e<`G6}T$uyM$>)3!=qM+tqTa^uy39j=dK9$!a5*{C zdCAy`F+T?ef1sq>${Ij;#gh>4aQ3lxsu7t915Dx}$|35kh!TXSBEwB@_(?qMY85q> zNWOdbCEKy0`oqRHgfdOc%Df4AAYv9t>6FaVjTrxli^(Uqf-tbpZ&gW0X*O2GMy6F7 z-@YquzIT1nKPul1SnBN({<~1zPkfnLlZ_lFnsJfoZB+{lYy?@<{df=Q&3jnm#zmUt zDaAQP%!jj0mE#PE+w*AM=O2~g= zAhI_5lho~~9)K-2moi~VQEk(Xk(D4Xm~K|fwwJK z%ur$3Ls3D$Y~yCw1hLsg*nKUV$+TwhF8DEN=ckDC=3(~GcZuGQT=R2nAQK9KxZ)jJ z(|)HKoWaS9JIvrGu!2$Jv``w?lwVjNu7meKa2842 z3`e*q`^FsIS2)NT1g+!|Qb;Co0br5mtvo7&yYOf9@Fw3PZ4j0&-o5zK9`xr3HW!<(hb$!VGL^Jk6a!0b!yy^zp3~1bIwUwr6tT?9+=6Uy_HmM5 zBkC=%l;Km7iUX}C>zkvVqP~;(YB%lgu@*KLn!b(!K|JYiIieGV8=U-C2Dj1n$rmi2 zZ@&|?T=3RQea6)tQh2R+NM{GukqSHTCiz)&2Y;@D(aO+iHGnpq$zF;j#!_g5)>5 zIm%dpEahFYO*i{!1&@40g!g;$yC{P=AHYsfbyk3a9(k zoMy@rSxDCO-o)FgeZT($TJS=p4`mo@0OfF*2jEy<(GDOzcUC(jqm9Y4JhJS>+lFzM zac(seBkf4<`Gn0aR$DSmK57BZo)yz%xCZ9tB;KQ5rxsO1~SNH!)clXm+QV}v&a=#&RCff#G=rjvtS2w zoZW9Q>_Jxbr^mH^^<~oCE38EVWzddoPl^PPSsW;m;N zGtYoF+yOMg1)OQ7R}{aT^1n!`N)6lR#;{JKbEx}rPuzF)nET-m4Gs@)0_lCfi-{V) zTU9>NgRYJFMh(_XEl#56w@MDJqKKQU3&3+x8m*6Xporoi-T;~dHN=@)9WCPx4<`(rIs2UjcxhSu=2jWskEy{+ocea{ zP-qL+wRC4zo&#`&9sJExN<7b7x@Cq3aRZ6cIVw#o7L&uVNt~eqVox;_pB4$%?U#V2 z)^(=!n(#>wFE3~FW)mux)9F`)oQ-B(FmYbOi_#CW7sI_HwLdVDJ58Sthi?W5Q}1s7 z7Ui7{_4m-3_s7R}TRam@5^Co^w>J?%;8#0e6r-WiZ_HvfUe8yo~?<%q@# zV8YK>n0V^16U^~RfM2S!(AteDc!Me;Z3N`M+~@S>U`~BDwrjNRkgL?=3)aaqn<7@# zjn~nBg8}^|fM4u3U^pD*FgF)BemdDom8dz$C%;_B!TGA)Pf7U&AHhc0h=GhG9Gth?eGj52od)epQ7>t7-FUoLLl*E-0L#V;XZWuww~yHb0K|G#oMtNqfxk$UO?*NqNsFNQMO{u;8qb*@ihFHn%u`5R?ag(XwaH(iZb4u2 zxX-e#Y-O-79NHhP^J%x@RQxHVT4w53E*{ZfjUJ43od#J6cZ7gx{9jR3MU!ludk!57 zGcyi;^asvD@ij*sKM=27CG<#%Yp*XqySxQc0}GD}^9IAu6ATm&$rRr@%YBviIKTSv zCL?13VE3VxS4$uY25RnT@8a>#hKpw|^mgi!@(PC7r4~)c$rz&``Ps-Qb}}Z#Y4o)q znQjkdU2wfntwsEzBFku`h{h?}ik^hdQTDGH@J1gip|YQWVzJ}6^EFjXC^n#0G;8Q} zWk)DNkQm)>-HZGyO`{Rzq{Nn6GF)y+uEkhkmr}?#WQV36JM5%7ADZigjck~YB92YV zwmxGQ4x>qdjQYG&Px-0p=gl$^#Cz?y!ZU1`Pr;|D)Xql?-oI_apZdk}{7@$f8N(_y zLcNE+U?bq19u`(ArZpV{pPpvK4ktB~#5_0%>jshGPd8Chg6mm~sTM%p+revWWR}KX z`SMbQ_x{YI)3K1x6IzXwe7~p3PKN1Q`C(PyqQehXBs-MaeS}ClTB>z?wk;p@Ah;hh zUV$V1`PtP6cJPH!OY5Y|cD=~+j7GOth+G*Y%f$mzQri2ul8d9^ z`xhexS(c@m&B}mnY~%TBx63ePldr(0dum(R)Y@EZDhemp*&hC14gRGDSmXXMaoPfs zAsU?t7Y>+d0`2qRKHm%m$Z2Cw&V))YzN_u)lK#o}eP{);S5HmxDg+SkzS;NkMom@b zHw3HcwBGHWA?-H)nsx7^wH8N%NAJ(^LYlX4CXq~Zb={qF$W@kqGt2E&RB3BJws}5> zMkYF($LTH25qFC+KNus0ir5BHFD#oN2DHNuhpdMl%W{>`NuMyrg>4PWqe1(S_QWjm zdxe9mf;6oduH-TIh?I>5GUzef4SW3UPzn0xQPf>B6wzq|BCiv>N5%&})C08Qif_8^ z+aHdgH!}K+Hx6Y5Hk^o?TCtRelw~;>sp!5n{6E|mDEMHXE8N*&NxuCmz(+4U$xx^) zimMoC=QhDx;BO{FBXCw3L^T5$I+mYQTew&1RT7T*tklsmP9C*MNVoW|m~nz;q5j)L zQj>2=1^LS);UOkXMIS0k#e0X}bA(9H?a`;E`Br~Vw9V?h7pYt?;9;DV`t5$aG^-+A z&fxBB`}-2UQ!YU2A5b)9Y#tf2`r~8|qZ>I10y%o&i7@qo7*!8-`iUpYjNlbJ0}(w$ z5^Bo0o};@g5-^=&l=#t=Qrd1ZfZ7lWDF-bdJMK?WaG=9MQ0iv|iJ{ zbNT}kH}%wE_Yi1%zWg<9X+K>jIT6b>AC{m+@+5kE_Mcm`z2F@vnQEn$>2#QqZx7UH zC{?J5;J=v?CfcG=apr)P$422{3uK6kPhnXJ;^rfl{_L%sCM;0p4>#5wfWNBJcBvBc z6ghtI#$ClRWw&fsOyk`n)5nZ^9*2VuFfGYU_ePBx&!*7?QTi`-^R!}Mh%D?Z+n(NX zo*h2G5*tUvnfAxVnJUfRm3e?myHEz-u{lI?kIL&J1kH)3cqjohDg4%?tkuyc3+bEY zl1MW04^>lVu(SZ&aN_|zOd7{Ud&`32^uNkXV+#gYvpjU#*UEEj>=>$+-QeGH6Y#K6 z3zL@`cfQHWKXWB2F5t}xT<95aZ3bms!fU~~kK3yL|8}P(od~r?3uT(Oql8b+nwkr% z0SG_=kGrGaAS5(hss^SB+}_Q^uIPb7Fv$Y^gw zmRYMprrv60-m1P%=#)aMN{?S@j(d8W$^X`_UMf1{5B32T3RmK+@Y0#Hh>+<->a^~S zBdPIOs#wwu#V+@VV>x-aF;3xr>#XNbNlE3<7E6ie=4-4t~236 zA+0~5luw^O>=s^jiW2NR+`HD3BL-X^Un7Nvru*uu;q+c=T#X`IH#q1eRV-1=2h zOKFPC?pF*Uhmk)$S-Oqi>uPZay?O_=4mxsM((K0RDD|QG$T^eyXyq#J=w{g12?A63 zw%@+&g)!j{>z&sg$6G5W`m;^kPHXxoU*M9WcYfCfo7O7~51g&$(pLfIEfe^CvD^%Z z5_rp@EY^dGi79^MM}_F!5?4!qoI;Wju4a7mzWm}}gZ7{*7y5Vo-BP_czA^eYSQ?nA zSi|G~7k!uKS4WikB-Gk<+j{8F^|qf)`0o}Poyyk*(r`=?S-Maa>RT4}B2U3j!f#&K zFp#+iZLlGETog<+y(=lSJG{>+?+%}2P~H&TJao{m<9bL%jt0Y;XPS*JygqTZJ$@}K zH+(7c^jXc05F761Od`fB>{XAdySn+~5r~Y?BdQOrpbjLo5fv!Mk+is&1%-ERzhb;S z)!F5LTz7R|UR-~u@W_CLWW}k2sb{NvDDc`wx%+GY#=y?H!*RmOyK|C7M<#y(PQri`p<+M3wG_17rN z;@ipcvzmC^s+I2I%=l+O+M0b&>o$`bwgYX!q@FSm${POgJC0hKY_-@om2vF?Jd18p z-R;+PdeLaL=-hh0Vr4}Mm#D0?zpC(q40+p-*(-)cZddRnjylec*ys!)yv}nz6pQ^u zK;3)zBtrze68gKa^sph(>=f@vgGW;X9p|{ybF<4UYc8gywUwAOI)6`JhD>gohNg(v zPfuF$@2*rtFU&9D$qLAU=$v;9JxsopJR&fd5Nx?iY`K*(V+GJ0dnt`4P^k>3Us$vw zj+(tcNVg-?mGeGJHtC*}n6HOOx=k4JtOiK^h>tDLe;vf<80V=_X`4I zRrWpof)OM&Vlf&c`(p-a1FfCD@P1fBpv)n=N0qZdznzVR%2chCo1{-Z9p=qI)nJM(?r}gmOET7+}PXJ*49{Fe{nn^ zlR?o!nn-SUP~=5&xOHvkrOWKq7N(SN(6+gqeK5B^Ie&qKgv4d;ka)Hxi{1vTUwB`o zygYJOtm2L;o8*(GpLMzx)Ul)y%8$EgO%$E=l0~}3=+j)Ze(^Ks(81M-Y!FY{eMT)%pnU0mXKWhuWy6kOPA1M*n_oX48D2A^H*`X2jy z&|_4{zSm!kEj7oZpKCz!qn-v561h1SmBRbg+{3s7e~46>cu$;mR)n-{(CudQI6NPN zND2oHNUvdu0#kWT)MHUw;IW!J^fQGh_j7SC&*|iI9TNRcAPqgeG^E~W@M{$D4M>_nwWw9^eFijHer=s6HD|e1|D!8DYXMM&wHVm4 zNjp%rx3`xB1On?^QaabL93WNHwh70o7-lWeeY+vGkD@NmHk_rRY=t#u98=Xa+gECxl2)>n3fW8AN%f2N#LF|~Zg9jgDCHnyWVZMT!K_x$(t zeADwbYK?d;g*!)@Bt1<(@dAA+)3$DRi{spEX{4g!a*Kw#tP^2s=T6V$DpDg|0X}wE zFW@wM@Aw_fgCwG!yOXd0g%lp{sbj!`#4J#khs6d%;kKmHl)Y>IXRptCp}`#Le@UE0 zhB3NL{b=V0GFPtC@Aq zoO3s?uq&mP3{J*K+Jh^vd?XO4cS0mzMpam!%~yGC#=eD@G%1<;XSX$U6OW}pjmCR7 z*{o@}jpfcEe>Fl6+6j?32mNEc|ACODYJn0SLBU!{TM-*#kxDBHUr|C3|Sks)uN;%`0ng$kDz zM1{53Kn5OUI+R{2@8+RX_Zr^DwfKN)lCI1ONX4&*`(6 literal 0 HcmV?d00001 diff --git a/app_petty_cash/lib/main.dart b/app_petty_cash/lib/main.dart index 2000ead..2b48963 100644 --- a/app_petty_cash/lib/main.dart +++ b/app_petty_cash/lib/main.dart @@ -40,8 +40,8 @@ class MyApp extends StatelessWidget { }, ), debugShowCheckedModeBanner: false, - initialRoute: loginRoute, - // initialRoute: splashScreen, + // initialRoute: loginRoute, + initialRoute: splashScreen, // initialRoute: transaksiRoute, // initialRoute: reportRoute, // initialRoute: testFilePickerRoute, diff --git a/app_petty_cash/lib/screen/login/login_screen.dart b/app_petty_cash/lib/screen/login/login_screen.dart index 7c8f448..c204b85 100644 --- a/app_petty_cash/lib/screen/login/login_screen.dart +++ b/app_petty_cash/lib/screen/login/login_screen.dart @@ -55,22 +55,22 @@ class LoginScreen extends HookConsumerWidget { onTap: () => FocusManager.instance.primaryFocus?.unfocus(), child: Scaffold( resizeToAvoidBottomInset: true, - backgroundColor: Constant.backgroundColor, + // backgroundColor: Colors.transparent, body: SafeArea( child: Center( child: Container( width: Constant.getActualXPhone(context: context, x: 390), height: Constant.getActualYPhone(context: context, y: 844), - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - Color(0xffdadae6), - Color(0xfff6f7fb), - ], - begin: Alignment.centerLeft, - end: Alignment.centerRight, - ), - ), + // decoration: BoxDecoration( + // gradient: LinearGradient( + // colors: [ + // Color(0xffdadae6), + // Color(0xfff6f7fb), + // ], + // begin: Alignment.centerLeft, + // end: Alignment.centerRight, + // ), + // ), // child: BlockBodyV2(), child: LoginFormScreen(), ), diff --git a/app_petty_cash/lib/widget/custom_drawer.dart b/app_petty_cash/lib/widget/custom_drawer.dart index d1e2ae6..c2bf587 100644 --- a/app_petty_cash/lib/widget/custom_drawer.dart +++ b/app_petty_cash/lib/widget/custom_drawer.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; @@ -12,9 +13,11 @@ import '../provider/current_user_provider.dart'; import '../screen/login/logout_provider.dart'; class CustomDrawer extends HookConsumerWidget { + // final String userCompany; const CustomDrawer({ - super.key, - }); + Key? key, + // required this.userCompany, + }) : super(key: key); @override Widget build(BuildContext context, WidgetRef ref) { @@ -22,6 +25,26 @@ class CustomDrawer extends HookConsumerWidget { final isLoading = useState(false); final errorMessage = useState(""); final successMessage = useState(""); + final M_CompanyName = useState("-"); + + Future getCompanyName() async { + final shared = await SharedPreferences.getInstance(); + String M_CompanyName = "-"; + + if (shared != null) { + final bearerString = shared.get(Constant.bearerName).toString(); + final xmodel = jsonDecode(bearerString); + if (xmodel != null) { + M_CompanyName = xmodel["model"]["M_CompanyName"]; + } + } + + if (M_CompanyName == "0") { + // throw BaseRepositoryException(message: 'Invalid Company ID'); + } + + return M_CompanyName; + } useEffect(() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { @@ -34,6 +57,7 @@ class CustomDrawer extends HookConsumerWidget { // Navigator.popAndPushNamed(context, loginRoute); return; } + M_CompanyName.value = await getCompanyName(); }); return () {}; }, []); @@ -56,7 +80,6 @@ class CustomDrawer extends HookConsumerWidget { shared.remove(bearerString); shared.clear(); // Navigator.popAndPushNamed(context, loginRoute); - Navigator.of(context) .pushNamedAndRemoveUntil(loginRoute, (route) => false); } @@ -69,152 +92,236 @@ class CustomDrawer extends HookConsumerWidget { final currentMenu = ref.read(currentPageProvider); return Drawer( - child: ListView( - // padding: EdgeInsets.only( - // top: Constant.getActualYPhone(context: context, y: 10), - // ), - children: [ - DrawerHeader( - decoration: BoxDecoration( - color: Colors.blue, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(0))), + child: Container( + child: ListView( + // padding: EdgeInsets.only( + // top: Constant.getActualYPhone(context: context, y: 10), + // ), + children: [ + Container( + // decoration: BoxDecoration( + // border: Border(bottom: BorderSide(color: Colors.transparent)) // <--- use the global theme to change the dividerColor property + // ), + child: Image( + image: AssetImage('images/logo_sismedika_landscape.png')), ), - child: Text( - 'Drawer Header', - style: TextStyle( - color: Colors.white, - fontSize: 24, + + SizedBox( + height: Constant.getActualYPhone(context: context, y: 8), + ), + + Padding( + padding: EdgeInsets.only( + top: Constant.getActualYPhone(context: context, y: 10), + bottom: Constant.getActualYPhone(context: context, y: 10), + right: Constant.getActualXPhone(context: context, x: 24), + left: Constant.getActualXPhone(context: context, x: 24), + ), + child: Container( + width: Constant.getActualXPhone(context: context, x: 300), ), ), - ), - ListTile( - title: Text( - 'Home', - style: TextStyle( + + // Expanded( + // child: Padding( + // padding: EdgeInsets.only( + // left: Constant.getActualXPhone(context: context, x: 24), + // right: Constant.getActualXPhone(context: context, x: 71), + // ), + // child: Container( + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(6), + // color: Constant.textGrey.withOpacity(0.16), + // ), + // child: Padding( + // padding: EdgeInsets.only( + // left: Constant.getActualXPhone(context: context, x: 8), + // right: Constant.getActualXPhone(context: context, x: 8), + // ), + // child: Text( + // M_CompanyName.value, + // style: Constant.body3(context: context).copyWith( + // fontWeight: FontWeight.w700, + // color: Constant.textGreyv2, + // backgroundColor: Constant.textGrey.withOpacity(0.16), + // ), + // ), + // ), + // ), + // ), + // ), + + Chip( + backgroundColor: Constant.textGrey.withOpacity(0.16), + label: Text( + M_CompanyName.value, + style: TextStyle( + color: Constant.textGreyv2, + ), + ), + ), + + ListTile( + leading: Icon( + Icons.home, color: (currentMenu == 0) - ? Constant.textWhite - : Constant.textBlack, + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, ), + title: Text( + 'Home', + style: TextStyle( + color: (currentMenu == 0) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 0) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Home screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 0); + Navigator.pushNamed(context, homeRoute); + }, ), - tileColor: (currentMenu == 0) - ? Constant.pcBtnBackgroundColor - : Colors.transparent, - onTap: () { - // Handle navigation to Home screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 0); - Navigator.pushNamed(context, homeRoute); - }, - ), - ListTile( - title: Text( - 'Transaksi', - style: TextStyle( + ListTile( + leading: Icon( + Icons.money, color: (currentMenu == 1) - ? Constant.textWhite - : Constant.textBlack, + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, ), + title: Text( + 'Transaksi', + style: TextStyle( + color: (currentMenu == 1) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 1) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 1); + Navigator.pushNamed(context, transaksiRoute); + }, ), - tileColor: (currentMenu == 1) - ? Constant.pcBtnBackgroundColor - : Colors.transparent, - onTap: () { - // Handle navigation to Transaksi screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 1); - Navigator.pushNamed(context, transaksiRoute); - }, - ), - ListTile( - title: Text( - 'History Transaksi', - style: TextStyle( + ListTile( + leading: Icon( + Icons.history, color: (currentMenu == 2) - ? Constant.textWhite - : Constant.textBlack, + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, ), + title: Text( + 'History Transaksi', + style: TextStyle( + color: (currentMenu == 2) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 2) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to User screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 2); + Navigator.pushNamed(context, historyTransaksiRoute); + }, ), - tileColor: (currentMenu == 2) - ? Constant.pcBtnBackgroundColor - : Colors.transparent, - onTap: () { - // Handle navigation to User screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 2); - Navigator.pushNamed(context, historyTransaksiRoute); - }, - ), - ListTile( - title: Text( - 'Report', - style: TextStyle( + ListTile( + leading: Icon( + Icons.feed, color: (currentMenu == 3) - ? Constant.textWhite - : Constant.textBlack, + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, ), + title: Text( + 'Report', + style: TextStyle( + color: (currentMenu == 3) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 3) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 3); + Navigator.pushNamed(context, reportRoute); + }, ), - tileColor: (currentMenu == 3) - ? Constant.pcBtnBackgroundColor - : Colors.transparent, - onTap: () { - // Handle navigation to Transaksi screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 3); - Navigator.pushNamed(context, reportRoute); - }, - ), - // ListTile( - // title: Text( - // 'User', - // style: TextStyle( - // color: (currentMenu == 4) - // ? Constant.textWhite - // : Constant.textBlack, - // ), - // ), - // tileColor: (currentMenu == 4) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - // onTap: () { - // // Handle navigation to User screen - // Navigator.pop(context); - // ref.read(currentPageProvider.state).update((state) => 4); - // Navigator.pushNamed(context, userRoute); - // }, - // ), - // ListTile( - // title: Text( - // 'Change Company', - // style: TextStyle( - // color: (currentMenu == 5) - // ? Constant.textWhite - // : Constant.textBlack, - // ), - // ), - // tileColor: (currentMenu == 5) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - // onTap: () { - // // Handle navigation to User screen - // Navigator.pop(context); - // ref.read(currentPageProvider.state).update((state) => 5); - // Navigator.pushNamed(context, changeCompanyRoute); - // }, - // ), - ListTile( - title: Text( - 'Logout', - // style: TextStyle(color: Constant.textWhite), + // ListTile( + // title: Text( + // 'User', + // style: TextStyle( + // color: (currentMenu == 4) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 4) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 4); + // Navigator.pushNamed(context, userRoute); + // }, + // ), + // ListTile( + // title: Text( + // 'Change Company', + // style: TextStyle( + // color: (currentMenu == 5) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 5) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 5); + // Navigator.pushNamed(context, changeCompanyRoute); + // }, + // ), + ListTile( + leading: Icon( + Icons.logout, + color: Constant.textGreyv2, + ), + title: Text( + 'Logout', + style: TextStyle(color: Constant.textGreyv2), + ), + onTap: () { + // di set ke 0 lagi + ref.read(currentPageProvider.state).update((state) => 0); + ref.read(logoutProvider.notifier).logout( + M_UserID: selectedUser?.model.M_UserID ?? "", + M_UserUsername: selectedUser?.model.M_UserUsername ?? "", + ); + }, ), - onTap: () { - // di set ke 0 lagi - ref.read(currentPageProvider.state).update((state) => 0); - ref.read(logoutProvider.notifier).logout( - M_UserID: selectedUser?.model.M_UserID ?? "", - M_UserUsername: selectedUser?.model.M_UserUsername ?? "", - ); - }, - ), - ], + ], + ), ), ); } diff --git a/app_petty_cash/lib/widget/custom_drawer_v1.dart b/app_petty_cash/lib/widget/custom_drawer_v1.dart new file mode 100644 index 0000000..3280776 --- /dev/null +++ b/app_petty_cash/lib/widget/custom_drawer_v1.dart @@ -0,0 +1,221 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../app/constant.dart'; +import '../app/route.dart'; +import '../provider/current_menu_provider.dart'; +import '../provider/current_user_provider.dart'; +import '../screen/login/logout_provider.dart'; + +class CustomDrawerV1 extends HookConsumerWidget { + const CustomDrawerV1({ + super.key, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final selectedUser = ref.read(currentUserProvider); + final isLoading = useState(false); + final errorMessage = useState(""); + final successMessage = useState(""); + + useEffect(() { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + final userID = ref.read(currentUserProvider)?.model.M_UserID ?? "0"; + if (userID == "0") { + //not login + Navigator.of(context) + .pushNamedAndRemoveUntil(loginRoute, (route) => true); + + // Navigator.popAndPushNamed(context, loginRoute); + return; + } + }); + return () {}; + }, []); + + ref.listen(logoutProvider, (prev, next) async { + if (next is LogoutStateLoading) { + isLoading.value = true; + } else if (next is LogoutStateError) { + isLoading.value = false; + errorMessage.value = next.message; + Timer(const Duration(seconds: 3), () { + errorMessage.value = ""; + }); + } else if (next is LogoutStateDone) { + isLoading.value = false; + final shared = await SharedPreferences.getInstance(); + final bearerString = shared.get(Constant.bearerName).toString(); + // print(bearerString); + if (bearerString.isNotEmpty) { + shared.remove(bearerString); + shared.clear(); + // Navigator.popAndPushNamed(context, loginRoute); + + Navigator.of(context) + .pushNamedAndRemoveUntil(loginRoute, (route) => false); + } + Timer(const Duration(seconds: 3), () async { + successMessage.value = ""; + }); + } + }); + + final currentMenu = ref.read(currentPageProvider); + + return Drawer( + child: ListView( + // padding: EdgeInsets.only( + // top: Constant.getActualYPhone(context: context, y: 10), + // ), + children: [ + DrawerHeader( + decoration: BoxDecoration( + color: Colors.blue, + ), + child: Text( + 'Drawer Header', + style: TextStyle( + color: Colors.white, + fontSize: 24, + ), + ), + ), + ListTile( + title: Text( + 'Home', + style: TextStyle( + color: (currentMenu == 0) + ? Constant.textWhite + : Constant.textBlack, + ), + ), + tileColor: (currentMenu == 0) + ? Constant.pcBtnBackgroundColor + : Colors.transparent, + onTap: () { + // Handle navigation to Home screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 0); + Navigator.pushNamed(context, homeRoute); + }, + ), + ListTile( + title: Text( + 'Transaksi', + style: TextStyle( + color: (currentMenu == 1) + ? Constant.textWhite + : Constant.textBlack, + ), + ), + tileColor: (currentMenu == 1) + ? Constant.pcBtnBackgroundColor + : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 1); + Navigator.pushNamed(context, transaksiRoute); + }, + ), + ListTile( + title: Text( + 'History Transaksi', + style: TextStyle( + color: (currentMenu == 2) + ? Constant.textWhite + : Constant.textBlack, + ), + ), + tileColor: (currentMenu == 2) + ? Constant.pcBtnBackgroundColor + : Colors.transparent, + onTap: () { + // Handle navigation to User screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 2); + Navigator.pushNamed(context, historyTransaksiRoute); + }, + ), + ListTile( + title: Text( + 'Report', + style: TextStyle( + color: (currentMenu == 3) + ? Constant.textWhite + : Constant.textBlack, + ), + ), + tileColor: (currentMenu == 3) + ? Constant.pcBtnBackgroundColor + : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 3); + Navigator.pushNamed(context, reportRoute); + }, + ), + // ListTile( + // title: Text( + // 'User', + // style: TextStyle( + // color: (currentMenu == 4) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 4) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 4); + // Navigator.pushNamed(context, userRoute); + // }, + // ), + // ListTile( + // title: Text( + // 'Change Company', + // style: TextStyle( + // color: (currentMenu == 5) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 5) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 5); + // Navigator.pushNamed(context, changeCompanyRoute); + // }, + // ), + ListTile( + title: Text( + 'Logout', + // style: TextStyle(color: Constant.textWhite), + ), + onTap: () { + // di set ke 0 lagi + ref.read(currentPageProvider.state).update((state) => 0); + ref.read(logoutProvider.notifier).logout( + M_UserID: selectedUser?.model.M_UserID ?? "", + M_UserUsername: selectedUser?.model.M_UserUsername ?? "", + ); + }, + ), + ], + ), + ); + } +}