From 24353ba729f73c6943d0d24cfcab8156fb088ee6 Mon Sep 17 00:00:00 2001 From: sindhu Date: Mon, 15 Jan 2024 15:59:17 +0700 Subject: [PATCH] step 11 : proses login test --- app_petty_cash/images/login_top_bg.png | Bin 0 -> 42131 bytes app_petty_cash/images/logo_splash_screen.png | Bin 9373 -> 13425 bytes app_petty_cash/lib/app/constant.dart | 4 +- app_petty_cash/lib/main.dart | 4 +- app_petty_cash/lib/model/auth_model.dart | 40 +-- .../lib/repository/auth_repository.dart | 10 +- .../lib/screen/login/block_body.dart | 278 ------------------ .../lib/screen/login/login_form.dart | 109 ++++--- .../lib/screen/login/login_provider.dart | 6 +- .../lib/screen/login/login_screen.dart | 17 +- .../lib/screen/splash/splash_screen.dart | 4 +- .../screen/transaksi/transaksi_screen.dart | 21 +- 12 files changed, 127 insertions(+), 366 deletions(-) create mode 100644 app_petty_cash/images/login_top_bg.png delete mode 100644 app_petty_cash/lib/screen/login/block_body.dart diff --git a/app_petty_cash/images/login_top_bg.png b/app_petty_cash/images/login_top_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ca07129a289d76a804fe86dae6fc454be0fb8b4e GIT binary patch literal 42131 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 OQnp9!t)E)qum1~w6h6oR literal 0 HcmV?d00001 diff --git a/app_petty_cash/images/logo_splash_screen.png b/app_petty_cash/images/logo_splash_screen.png index 6b056db1bf8ab550bada5689944c608778a5f84a..520fda1332b7dbed9185c290d6a6eb65201772e3 100644 GIT binary patch literal 13425 zcmb_j1ydZ))5ayZ{ct}#1cJM}JHb7;ySp60-Sw~|xVyW%92VRO9{lD19p0^)o$9IG z?yatw)@Ok#O44Xwh`vBUL7~aYNT_|zTc4u|3E}h3sv-LAb3%5K(Q$=>Lc#gpfQHJ- zA^2Q`c2$!WgQ}h;Ir${uEJYPXp`hyGQC>~pp`bVrWFS&maZ2{Z= zt=4U{U)ZnXL$U>1!}MX`qIB6inyK9rDW7DzS$Y6Qn%W;Kn!m_Jz>j2~D=V*mUw-Y2 zmzPs`-M#maK7bNh%k{53|2rKw3gixn7K9cXa*dTPL!5BBJ9ZBCB7)09 zEJ>SkmspHs9A|=B3Gg_}o=~Z?)z}q`WHrZO>G2~QF%xg*Mq5icL5Z-Aa7K8~Fto*9 zj^BK~gwZ(vlIk^sOxE?$u0=TntVS00|t-182bvdFQKYNQ>H{y zhUPDijQ1oh&ln!oXpju2Sm!a1rvpX4!-wfXL*QyybmnYiba;d+Wq1%yxl=g}L}k1# zS#O*v84dLSb?lf^Ohj^VJj(p*RB_9qulk3^?o^aqCw!sRXAD**RsB9v7@Bx} z9B!%0^S|6wx8{BovQ}F~;#xL)7FFOQs)?pdp{C3tBPhf~hJsDe8yl-%#x<1}RIxbk zkx!S&q{KVL9;%hZ@Hc7J$Q1-~e+f4J4VL!fE+6DK{=ou@t2%M;)y+qrZ0c=@@g;9q zQ8>~D4h(`Oq|_ydV)lg6237mn=bHBcASq2w&q%pW|AqGoNp1E68a+hL-lCbnP}96{Y^;PGQX;FwqKs=t>H0VKR`=`pFh4_eX2$aB~nTZ zK6UP(Zn1z-zxu;gkfS^{4N7qu&^k3Lp)u7ut54Cz%K0@0t`yBVtjM_*seBdwlLL}e zxLv7bg{ND5z!Y4)qR|j5Vc43Zg z_BEeTO|ikoW++Y-$W2XFWrKG!CSMkwLRYX-o}idMIC@`ABL&f^=sN5S>ywv_3cBdT zVYDHlJj@{mAAhyRc&o};K7MNAUDj7-66W?6BvDRxF7_P{YB}>t~yMS?D%!0xhMey@k zA7079pC9lDa8xEVhnc=h$kK@B5vIca`{GA3gMUUt36-L;2p8_L=8_qE47xJ&x0ff6 zy>pGn9Zh^F5m+?!kUt_0PSJDce7;lxj?9)P45KhK;$suB>~rKo3RodMOh)Kfb!^sH ze>6-4NqOCy&G+IYIKtNFN3wOpH|EDMN@&y4HuP$%xc-#oH)~zSHW!#0sR9wrzkzIE z)^PY+5L1;@0y5_=;7^jN!3^q+CPH8LwPz99$xru~p?T&lG2FM9XkqRlx& zh3x$RMltwVFrTM!u)%|P*I+7$yJOTMU;x$sf-haI6i29aDt$yI86roYYq5|Z&o4mU zGWHW3sSx0+dmg81tStLx3obgro#M=|IikWg%emvm-49rgWAn@2^-I3mn~{KQk{ylj zUeTJ9_x-S|@_U#n)H?~F2Oj-=3xuD1b4+ZgE7e3Jb@|??k0+X%oAQ0-TXlPTG;pBg zIK}#kcHJeJyGg!-Lam_(e``w=ZX8(yF$Uc_#>9_KFr7t;UkIhJ zUxs0(-;sYT>1UlFb(={vh{NcYsh;Cop|gcEYDeaW!CWXL)91oB&CM`VUqqjVdgPMi zON#CJG&&PjkS1A7pClt(_aTzwh1J5*hEWE4KkNV5Vudrdl8SQ^FdSo@J@_3>_wOx# zy4x8U9U47%klnd;D;fWzhPSj?+j%e##=KLRgq21bbxQr~s1@#?@9O{L8S8To7-KhtIMhqR)D|s z*nO)^SP3@Eq~|0>n^Ncsp*3!9$8?&TDH!Y?_O;)&{y~Rfd>vOt9$aA0u$(;JDg)zL z3A@i*DZk5o)`(kIP`Jl#Ge8U~N z3$8mb5p_O}TFKr`EQ(vEe2ezMRp)PWy8v@9Uh!%2#NALz0GM5klkE3##AE>J-|HA4 zKP+_dy*(Hu-CHG`r)e(GcS*B&t5tCf+A#~yXAQZWo}+!l^n>At3aJenFG#M(=LFj3 z1ffmq<+UlkK61gN@avo>N?gv4rj2A|U}hZ@gE?EE6El3nSe*&CmiNI<`qEKGY8Csp z<*Ojj$~xPa>rc+J2y^?*$?E|`xXr(Xxq2NzJUM4knZyFN{7y5a(vfJZB}8*`!l0)> zk=Tk(oW4&9b;S3-xG?A(Xs2*!=)%7j`}p#+k1O9G53l^4oL(3!$!(#;Qgi2rT=qAl zRYCo-Fk2Xa*>%E>=jGwMH3umWEL9Bd&j*#Mx-%>Q6J(K>61mGwbn0foel*C|(~{|5 zvQDOQpE~bM=Q%Wv$XLo}s$vQF6#F-Hh)-e;ls+A3U=GLEF|UNK@o$M zG1JXP@>_f5QCrJ;xiN`Y9cJ`&W7hFLdN9WmgQ{eziWJZ*XELz|#nD=Xdzvkttk6`il(CGzO^|~Y z4R%XhhiG!K%`i~f(#OkIOH7sAmwSkbq?CTNiLwwOC7_bbt@eUEXG!#ZsVyf%c0U0Li67&VIRPWU_bwFJx{vzL3H%7js+e9IdI7PFzju}fu;D5%jh>psIxpM`5w;i5G zK*DjBMH3^s>+xsLE5!H$2Qxc82$hUod^dkERrJdoAHF-&(?EsIFe!0RLsSSv7u`e3 ze>%V=SAa_8mY9#aes8p*m(N2bx6|z)>{p2dMB{k2@i-_cQH*kCe+6^P;8OQQKnFb$B8n^{_RxjCQ^L~kjwmR#tUdS9oA597Y(|xf79&fD7wMTMVh|0p7ld&8;Xn5y-u-FC?Pdb#geZy?9J^k14-&W)} z=}{hCdw#dk^fIb%Y}q0jqw1zZP!vG0D%5B|>!2FjF;C@OK!Fi(NH`YZtYbf7Og11Q zQe^n^g4`yw4w_PiuUZZd0ev0aW9F`zxb0H*3Rz`5tFaGaH>rfa4plP}L!*dP+=ZH8 zh1A)V_;#l0LN7c|wc~^^%db(=%Oi$O75;Uy`7Gv#jx0WiqG84b0Y`hzYN7st#GY>k zF=6;23#J?{VsK9uAUQ9D3h7ej7?SBQrNaZks_#(ybB80wp5lebcyRyy4y^tSZp+Xc zBRAA!KT@#bGqOz+J);M{AKz(R<~T7@kXML%e6zk zy^m|aEAuBK|MrDlQgP^5#9V_!HcDCXh_+Hp# zTy)9Xt?3AzM}dE8bh6|A4jMM(FXb4LqF+#+T!%834)Sl1GgFeTx@R3OLfA6V_uyf9 zHAV6FNOKduA4gy6?g-LgBvx*X8Ef)O`~7+4FZ_7AVFMJD^}g{r(5u=DKK1ps2#$*3 ztEaGiYna*w*Ghz=V|Vn?V@3a|f^S-AY4A6+p>5~*;Jz)XxZ_15>x0>y#hMAj35&L8 z5ei|l>18J#dHU#6a6au^p*EXwE~0y~<5hg5^2x-gE(^1j&Gyrw$J`8DlJ<5U?x$4f zx-~b67S#hyNHfUL6g#3|sZv*M=KapTQi>EOR}vY8=;x^z!lMvM38a^bom8aR9b~;|! zI{+YJmN4v_k@c$0f#2-;89W9X*r>ui-56yl=;mDP;eNJ21LAU3^a10#{M?@LHIeOx zIc9)>s=7^1FbG13p6@C-6wxYr3>X}AF+jobjSb;d+W5XN;M?eG8KzIdW^5j9$5%i| zsfEMKP|-S$Mnd{v(27QY9I7jyH98>!X|(H6RQ=A0o*!GbBTByLq$k=Lh#2mDYQOTd z;XGQIX*(nM+BS1EhiRqrauM-7=?8b9nV*8hY#B&chc(4jNXp~!qfsY;IP&*G^6g-? z1|>Zif52`{r^^c`Ca=q+N`)+9dg;c&R{q->jsL@U4F&kHXu-bXMd|U2FR|Bs(@d8?vkeyYtkkvHEeKP9M7inAq zsl?fjH!}9a{w7ObQ6O#$C$0&aA-o5@TEKIE+~uIro&JfllY;BWed1BBQ&8d|8%^D9 zXGhT7;nRDHC}7Kxh}kIZ(u1HG#>91mzB|;|iYe^EX+$U8B(Bc3@rie^!9tNs6#00- zc*Y-|toohb*j9YWW-SpTP{Ak z^;j#(!L=C|5{LBCxKHOyr%oY~2zj|R(J86h-Zmfj(rgL!`XwvJH?9nXlO)RRkINQ{ z1u#C!fqx4!%f?SS?;tnEf$VsbXYc)9d3j_hQ?ur3n$o||V~Y7wvTz!-n!z5zMFzk> zH}sBIT`jvuS_$!t@ezqpZb>Je)W)bkh%n+Qu80NE=Mi|@6BZ^D&~%~CepBuBSi^Rd zf6$34;{=|n$jUeA-JrheKCFNfdbe#kX5pwhxR9agjN?>*Ek-IgWP*xPCN+)~lP(nb z`C<4WZxW^fyw`jDKY=8Lq@`BmxC&paDVc+f0}XZH2D&;Ux}NMRN@vu$=eMmo^)j0Dmev zf^=M=4pVeAKpbvS^HYVbL|dqNncZfubo)zS6|w6~K!ZWWUma`G`8v@@`Km^aXgIY%5f@#qPx?{ zK2Gyd)f&&h-!PftzFscnusu8;w-C)AnEyOxDqTyk9mxw|kJD>+Y%r#A*jxu5qjy{! z8(NOkehT_ta)YTsChx?7st?T@QnB~u_Glst!&f6}-Iu0fxtD1z&p z<+SJ4#*~iGxTB5<4dq{L2%WiekXE!~R3!;7WI{g#dIs&fw5>Z}7rw;81ZTOmGioBh zPlmQqPS{L?*b&3|^m6J~;C)Yb2lzMdqTRQ7FFNRA+aMWIdXGN8%DtzdO0>cZBe<%r zWfI5|I=qGYQ|Cop4WfWiRgm}|3-C6WX_y`Lw9(dUS@G`8a3%`17s9{Fz{hF`Z4qhsdCHmI2i_t4=P3^QW0{ZYtJ}4> zKKb|R{psvbt)rnanAf2hwb6RqIRf_&e?aSHXVRB-14Mtmzb`-dQoVNcPYv0c_dUGd zT8-!7sZu?f9cY$5g3xoGUk}|4W}iOZ=GjgI-?zBKHI5>CUhevbJIFnfJcR#xe(c6- zCH~z@&SBAXy##W1`ueva${)Fx32jw>`Ocy${qs(e1HZV5_A_by@5uU+{g>?dRwnkk z+pQuI=1z!^A}=6bbitPT!mr>XQyH3tE>4a~LCkpl8BW}i1(Q~$+=B{;mlPZWAibUb zFTVyWTCCATMCxDj*A?9rY-Nx9>g{n_+`r4Y+39yPU?!<>zO0v6%g0leE5pFQ+%qCK z@blhN{awGj`!=v=FqL{y(pA9m{X?u)$SXRMw~=YFdCPtZBCT-;-N{ECS-J1quGoV( z#di6+Arsrrta^!&K=$?Yp@9+j}dvhV;;R_P4+ zUF&(YF#Tt_k0->=(0xAkt~@vTb=g!2F!VD?qrkpRK4I6C)rp3Xuzc9^pPP~qrTOb| z4ZkgLn#9yCz!sACTQai$HbS)0mn=5x^~;?zq<v%<{H-fXP`>>ke!L{?3in;$1>%GD_IqGwmMJlPMU!u&v|yj_ z15x5MQ7K;_RIvlEyT;CyzS(J6lYF?zq6(Ga6A9Wht(Di@#LtjreDC70A84b>?c2aoX1Bm&wUb|Q>y{F>Gc zGb)#@R(7%z+z5^vIiuuO)Ap7okF)j}ZQD9MIJ4yV_!Dv0eEa5=zBh3trRf)`0oTB# z1Z&9~;+d7{%UHZNesA!~Oi-A_>XI~tndh6qEZh8^QY&@ft8F^~qumJ+c|i)@RnKF( z?O)V_qJ-SjbK#jUt_MqtU3Qt>g{2GlH}&We4U!ICxi$VeCXu%xgs9Py#Ba#XzJzhGQ>M$sRpgtVb_;Zd$LXUT&zmGK+ccPsfp8NLsSu` zQNqEy>W?+wYE&e36I|ZLOskvr%6s+OmxYq~RnCULdpYnRT)x(d!e0bNfs>US_ftrq z?_qywfFQ9f3}wvM=)(UfX;TwZRF7O66zjtks6|oYurI9&9@6Zz2#l-!&PFMfpdepCR>Px`OA}1~tc9r4*(;L_&+&fi_J4d3ORVt@bRB95YD1wr4mu<1NlON_35-c{ zLBwYdc%UALy%f3LM^qDT-z5RAAf?Vo(fRW7i-!QZwp({DZ-0W2G(~%!53(Z2+74F5 z$!o==viz|I%zv>q>?XR^x$UmE&!0w6XLa7X$KA3FL*5Q_MEl+xo zS{EyBF11KJ`xyk)b5EvsARbLBEGo{y+m*~V}b9PgEGl{ zjT+(UNOl#wgtti;ahQWsC_$AUi3Mx@?eu5q(|MPjhYS=o7Ynx+d>H{$FN6C~yS~3$ zy&Fejy9QNeG2ax0d4m{<)~GBWHAA)vY)XD$KNKx198dC#pKe7ikGN6EZSTErr{BlQ z3~hDBfPT#ggvWJy@|NFPf9);(Wh50FmSg)pLG>uoa7G~}_Db_yJ3*j}Y~AeH^WmiQ z>+O^40@kFret!K4Lig|1fF7QWHP7EwBoE#8c=;VJ*GMD_2dM6Z;s!bH2hya%3U5ir zr}kPME%Qw4jJY0$fnR%-O##^Hckfo16RRsZ0+&SokK>ioiZ5dT2d*V%(35XAjnv$F zFI;9{I66tU0;HKY8z8uXT~nkJuwbOiSMxHPMfXD~+Onh{j?+&UIJD5lH+eRZnA1X; z*c{-2?jEIze0c*$rRbHm&$kOkxtsayko*THb+K&r;Lq|_M92)TrRpl+x_R+N%-3v^ zx0CgpS_(EdDzoz~E-Hxa!b3zmSwobn5;8y!28il*| zIJ#z<_yiR^sK@#lx-7VFR!wK`eY>B(@bmbUbT;NOTbxbRr7c^Xb zle4FYR%957uevBfgl2c{mFF?@mFwoks+$XIAygy_%uO+|*M^QC)>C#!(V7*uT{IZ} z4|R{s5Dz;b)FYHi;UcFXV0a$-)!aG~dv5p4yq=@w>Yob}UV5PbbQWNDf7aoRo!l_u zh(vRjnL=r^?WyaX5RNUQ$@gcYDcN3IlY@{dwZ^r?x1;3v zc;a#TO}@OGYl}(@=REkye$O|-KvlFPMYzoRl7!kayeIxEAQnKDc_p{^tMj!P%WXN< z2MO=LR4m^w{d!*x|Q2C<}N(a=n_zKVGGd(N#hKoaPA-sLK_ zgy~jz%;!VZz7syI<@)uB!}&W3_R+W^^hD|ra#$Nr{^q%MQIQ%Oj!28Wk#Arhx~+ZZJ7}hTOiaE?aiTmpt@IK3$L!55^)xba4VCOS~(f+*eA*+ z6i-q+kpkf}!@Ar9m@r@M@N&08$-Yv7W4Vu5x3?Dhu0MWv5zq-%bgBaqwZLz>%5d$1 z1^Fb3o_Ok)>;@Zaf5yKm^+%ZhR3N*go)J0HYPSE{5gwx5h~=U&b;nimwR$((QDgT4 z>H#)|Ug=Eu<2%3SmZQRAfJcqHp*I6W>~b+20%?%;owxs>^pH{h zI`d;R`1si{cV;MpsZ6y#HW)iN#;cVxj?cnQ6=poGtSv*V;`y~iVy{_O>+Sx6N#Apx z5T~f<W$=5?tcK$WqO5Ri>wm?3SS;0&-J^ zZmA@VA>vlI>n(Os>+#HY^aomM?h`+ddXsghSqa?4E%V*Nx!^UrwL1Jf`;5qh5!?n86JleV%G%a>9^0{N8V2(eG#e}f6qc66AW*JUFTzk z0I~5n9%EZ#Y|`^Of`f+tL@^$nAzzE~wXma0O5{m;&Q0M<>goxMt@{_V>beXfP;UQx zoX0k@&^lf7Nt z@0a&`cN-ouef$+-!b3nq?wxrm%RT6S7CeStrbW}Lrt`OMHCRk0*pRRL1Dzb>yk=s) z>io>>V_Dz^!{^&0^iW*y06s7JdR$;-Sz!+AUy3et0|@Om7{+Th70BBG2&a6tIU1&Y z19|pxE4+{ersX;z|ehNj*09lU+XVMRe0MPIaN;>HILH zf2Vh!Jt*`kbR{8Sv>Wkrzd{g(`^yo&3mnQPh6A(7AbK~GU#X^OP67Du{g?SNaWQsD#JX(LGS$*W6`N80I zx`#u0ffuPEpX7x_a!KfCNL=y21^h@+z zrA+Qrg-x_WUy!P0$@cuO>jphZL;%;9JXB< z;{kG+zP!Nwf+S`cHaY{!TLB$p#arCug?g$ZoFqZ+H{Ts-4>uFR4>G*p+kuV&-LLE@ zjMsdB4>Da>RC-4qKmsN}~vMt`qrfF<1R?57@nZpAfV3(}S&6!`z;!>wKQLc;7_Vu26C7Xn$86h=Hg~Kw zbe+c}7eY5nZnn8qdZSJ+Px4w(F)K?`SS~XvYM#dCkv8;*mSmS~o{=rPC+W(TeUOO+ zL!OKV8QGe*!H-wLa^{sc+4kEd0=)6tqUHa;mlv%_dAYHdn@=sObR25IiXLscG*jT) zCK5XDCy?q{1nIRqna(`=2A~j5bR(@2RBPd*g_iz{7oN6zK2WmB}F;5z z@hBDD^Opxn00Pvesut(Nek8^`!gsfadwCbe`9EoJ-inoH#BC~l#SM-m_ytPG;w85p6JCJ;T7sZi)Z+J{9EZxYY)IW#b`^z)1o$S?wDt3ro{|&5ot`H;4Ze*f`a}#Sl+>c#sO&R+yA7q}k>BM1mPa z;;5LA-X9Vo(X}TrpEz8^xZ!n-RMX_)n$B|mQQw)T&VaH<{5G&qBD&9c?&xR(sZH|1 z_qywwQM9s9nJlnx%#~~3q{>9(BXj)3pkTaU7deZ*iMm~v<#Tl`o{+92PTS_%D4kUU z%Va$(nEZWxUs*jj;Z{E@WI`~5o{d6aVuxyM=&$KJ7c-6yHu3AB)LnGiAEi45bIvU_ z>+J3%;};~u-q4Ma4iD$HDnD|`Yyxp(b}ndw276jTfV#xzru?$j zMP=Mu19IZ+R19`#9t0#JiI6Q0rPZ1jPnA zb)2xE8N@6Nvc;%SUs)RpS=E%rldr!@>C$HeOuwVv!<8Qj+9_lkxr!z$ zRVif~VNhsuJOw2?>K=`QX(2QpGdbeC9+oDc%^y)RVw|8*(&V`2y(<0|p%C6MGKFsX zlKU*rWoJjjs(O(+^ae8(rGBh)_87R3+~hvFU%4AQ0xhr^&~jjQ{_%M4OLV+Uw+{&p4-0Bd}4kpm=ia{w(7tu#S8{#3o<%m`D?c>Gun7n?grRY|NjQhQOR$~ z{&UYR9w3oFSnfMn)C0onW;AgmLvBmrV zT`npbBj}hk$3RcE^tso@0qr&2a znad>d=iv<5r2br>e%1S?I5KxkGITxKP$B)6Z~*Jqia4|T+E1(h;3{IBODFu{rg`?F z()-x<(DuWmwVITtTSbaOrQ?Y*MAPLRIbx&jv_E$cl0LZ0<{N0C}isM0#A7 zs14}@5e)xD0m%t!OtLu6K}`0nAf5v6us_DrW2>E3^2c>({&quQDBWI-Cpr7#=}DF2 ztp$CPAsg}6Q8KOttoYbFgej{JbK5NBS(w4>5{|H~`@Hj1>|Yrxyana^7U8BD@_VO0 zBh@YBqji=F$~j9zarwoR*OcnfePb?JrCJOuMj!ue5NEgJcs{{W$j-FYo$0kx&Pl9<(iH6d|we4wd&cK>YG1MRi%nCq;d>B%Sk>q zyM#@u{H|$bbxgs7tDl}Hwkdz}`H<}#ZqL~p`|0^G4T5Py^)OW_TPXeD&$)kuCI(K* z;<>YFat5bd9+_n5m`J&49Q-Q`?%lc<+-9+8(UaSmKKii9o`BnqJ#yi=5d8V_OE~X^ zTiclK`2Jy#RtR&K(5yYDbhC^7bpgDJbcnld;@X6(i&@`e6Tn}(UUda*bR}To1P%_P zKSz&b()RKElnWcG?%|GtRtQqnG(pI~!}&z+y<}y+nf4=$^Rl%Uq`X>{&2;0hwp5YR z-;Lg=;A$u?eD^3GCIf`2gj(MaM#g%~+ldSh*k~QtmW@k|Rn%+GPYs{N@DHr zfuhU3c=57BFZ8YmfJ|=V(+){oQ7J(41HHIa?Eh|6M`S>k`=~=m`6gA>xZQg@_mNbH zeHktU?shy(vP5c{{NwIEjGNCE%)4Ixh2|4OtfyXW)C{>-IGy{^EtaJwWl_%02Sc~y zSuFCm9ey+Y{Wb~JAx8mQ?4ZY~QBkBWQII9ue~ExdeH|yzMz^2H^u$cHXx-4Tf_1&m zW)y6UT)!#2rO>7(uGr0P^nQA-5C=tS!Q*hMswO1CFpVMnvfm#^!`v@vF#NqEl&hbA zPgv+l()z}A<#lQvm2B{RvaaM?#&nsP0=`>}^}3Sa-&=vIeKGlQJ1K5zGwSwMw>vTc zZcy_oI09h6u^6-%3nRj7ezhXT>FZ$fzN6z517ZYV)8zrU*;v(os+yMSH% z?XP##fAZ3?cVvA+0||MMFbC@dLJF4kZDhmc&>v(&&c=i6YRX@n)h=%03yt=rdHV?n z?j7h3j9O~Mr_+^bb+8}nEtiMj&REFOPcz-jKJ5AI8CJMl0JE(5~S#dJ& zk$ww0^{*qB8YmJfUn)XqFE(GljMr7%d+TUA8r(?7ldYgfbGwfkOP(dH6PL#kB7;b2 z;_sS992y{4lTgI!?BCfNV1sSWJuj@^4B!9m#diIm>4Vgij8`t30kvR>PS&|R#m?Ub z+3B`Sq}l0QPhQm8(KC9Q$?H0zpN4}gvu23%;^Ke118TJA1@k`v`_gXqXU4TF3j>V* zA*Oo0L^)Wu2>*|O{UqS1FB&Ufa@C%HfEh3H%sz{EIC-PgW%Btf4a9HXMx$e*-$XxQ zHKNJYJh|ruu!nfJk+7M7x6VIR{M_1wtP=r_9vGEB+%$kK7{@;h3`-2chdvMohK7f0 UdXV%#{}6(bl~j_b7Bdd{KVhh2djJ3c literal 9373 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 json) { M_UserID = json['M_UserID'].toString(); M_UserUsername = json['M_UserUsername'].toString(); - M_UserM_DoctorCode = json['M_UserM_DoctorCode'].toString(); - M_UserM_DoctorID = json['M_UserM_DoctorID'].toString(); - M_UserM_StaffID = json['M_UserM_StaffID'].toString(); - M_UserM_MouID = json['M_UserM_MouID'].toString(); + M_UserEmail = json['M_UserEmail'].toString(); + // M_UserM_DoctorCode = json['M_UserM_DoctorCode'].toString(); + // M_UserM_DoctorID = json['M_UserM_DoctorID'].toString(); + // M_UserM_StaffID = json['M_UserM_StaffID'].toString(); + // M_UserM_MouID = json['M_UserM_MouID'].toString(); ip = json['ip'].toString(); agent = json['agent'].toString(); } @@ -60,10 +63,11 @@ class AuthDoctorModel { final Map data = {}; data['M_UserID'] = M_UserID; data['M_UserUsername'] = M_UserUsername; - data['M_UserM_DoctorCode'] = M_UserM_DoctorCode; - data['M_UserM_DoctorID'] = M_UserM_DoctorID; - data['M_UserM_StaffID'] = M_UserM_StaffID; - data['M_UserM_MouID'] = M_UserM_MouID; + data['M_UserEmail'] = M_UserEmail; + // data['M_UserM_DoctorCode'] = M_UserM_DoctorCode; + // data['M_UserM_DoctorID'] = M_UserM_DoctorID; + // data['M_UserM_StaffID'] = M_UserM_StaffID; + // data['M_UserM_MouID'] = M_UserM_MouID; data['ip'] = ip; data['agent'] = agent; diff --git a/app_petty_cash/lib/repository/auth_repository.dart b/app_petty_cash/lib/repository/auth_repository.dart index 9974c96..2762d47 100644 --- a/app_petty_cash/lib/repository/auth_repository.dart +++ b/app_petty_cash/lib/repository/auth_repository.dart @@ -6,13 +6,13 @@ class AuthRepository extends BaseRepository { AuthRepository({required super.dio}); Future login({ - required String username, - required String dokterId, + required String email, + // required String dokterId, required String password, }) async { final param = { - "username": username, - "doctor_id": dokterId, + "email": email, + // "doctor_id": dokterId, "password": password // "username": "alhadad1", @@ -21,6 +21,7 @@ class AuthRepository extends BaseRepository { }; // final service = "${Constant.baseUrlDevone}xauth/login"; final service = "${Constant.baseUrlDevone}auth/login"; + print('url login $service'); final resp = await post(param: param, service: service); final result = AuthModel( token: resp["data"]["token"], @@ -42,6 +43,7 @@ class AuthRepository extends BaseRepository { }; final service = "${Constant.baseUrlDevone}auth/logout"; + print('url login $service'); final resp = await post(param: param, service: service); if (resp["status"] == "OK") { diff --git a/app_petty_cash/lib/screen/login/block_body.dart b/app_petty_cash/lib/screen/login/block_body.dart deleted file mode 100644 index 8aae4b8..0000000 --- a/app_petty_cash/lib/screen/login/block_body.dart +++ /dev/null @@ -1,278 +0,0 @@ -// ignore_for_file: prefer_const_constructors, use_full_hex_values_for_flutter_colors - -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; - -import '../../app/constant.dart'; -import '../../app/route.dart'; -import '../../provider/current_menu_provider.dart'; -import '../../provider/current_user_provider.dart'; -import 'custom_text_field.dart'; -import 'login_provider.dart'; - -class BlockBody extends HookConsumerWidget { - const BlockBody({ - Key? key, - }) : super(key: key); - - @override - Widget build(BuildContext context, WidgetRef ref) { - final isPasswordObscured = useState(true); - final ctrlUsername = useTextEditingController(text: ""); - final ctrlDokterId = useTextEditingController(text: ""); - final ctrlPassword = useTextEditingController(text: ""); - final isLoading = useState(false); - final errorMessage = useState(""); - final isSuccess = useState(false); - - ref.listen(loginProvider, (prev, next) { - if (next is LoginStateLoading) { - isLoading.value = true; - } else if (next is LoginStateError) { - isLoading.value = false; - errorMessage.value = next.message; - Timer(const Duration(seconds: 3), () { - errorMessage.value = ""; - }); - } else if (next is LoginStateDone) { - isLoading.value = false; - isSuccess.value = true; - ref.read(currentPageProvider.state).update((state) => 0); - ref.read(currentUserProvider.notifier).state = next.model; - - // print(next.model.model.doctorName); - - // Navigator.of(context).pop(); - // Navigator.of(context).pushNamedAndRemoveUntil(menuRoute,(route) => true,); - // Navigator.popAndPushNamed(context,menuRoute); - - Navigator.of(context) - .pushNamedAndRemoveUntil(menuRoute, (route) => false); - } - }); - - return ListView( - children: [ - Container( - width: Constant.getActualXPhone(context: context, x: 390), - height: Constant.getActualYPhone(context: context, y: 343), - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage('images/header_tanpa_logo.png'), - fit: BoxFit.cover, - ), - ), - child: Column( - children: [ - SizedBox( - height: Constant.getActualYPhone(context: context, y: 136), - ), - Container( - width: Constant.getActualXPhone(context: context, x: 148), - height: Constant.getActualYPhone(context: context, y: 78), - decoration: BoxDecoration( - image: DecorationImage( - fit: BoxFit.fitHeight, - image: AssetImage('images/logo_pramita.png'), - ), - ), - ), - ], - ), - ), - SizedBox( - height: Constant.getActualYPhone(context: context, y: 43), - ), - Container( - width: Constant.getActualXPhone(context: context, x: 391), - height: Constant.getActualYPhone(context: context, y: 454), - padding: EdgeInsets.only( - left: Constant.getActualXPhone(context: context, x: 32), - right: Constant.getActualXPhone(context: context, x: 32), - top: Constant.getActualYPhone(context: context, y: 20), - bottom: Constant.getActualYPhone(context: context, y: 20), - ), - child: Column( - children: [ - // form - SizedBox( - width: Constant.getActualXPhone(context: context, x: 180), - height: Constant.getActualYPhone(context: context, y: 29), - child: Align( - alignment: Alignment.center, - child: Text("LOGIN DOKTER", - style: Constant.titleH3_700(context: context) - .copyWith(color: Constant.subTitleBlack)), - ), - ), - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 4), - ), - - // notify error dari backend start - - if (isLoading.value) - SizedBox( - width: Constant.getActualXPhone(context: context, x: 20), - height: Constant.getActualYPhone(context: context, y: 20), - child: CircularProgressIndicator(), - ), - - if (errorMessage.value != "") - Text( - "Peringatan : ${errorMessage.value}", - style: Constant.titleH7_700(context: context) - .copyWith(color: Constant.textRedProblemMaketing), - ), - - // notify error dari backend end - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 24), - ), - // textfield marketing ID - SizedBox( - width: Constant.getActualXPhone(context: context, x: 320), - height: Constant.getActualYPhone(context: context, y: 50), - child: CustomTextField( - ctrl: ctrlDokterId, - isPassword: false, - hintText: "Doctor ID", - labelText: "Doctor ID", - isError: (errorMessage.value != "") ? true : false, - ), - ), - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 20), - ), - // textfield username - SizedBox( - width: Constant.getActualXPhone(context: context, x: 320), - height: Constant.getActualYPhone(context: context, y: 50), - child: CustomTextField( - ctrl: ctrlUsername, - isPassword: false, - hintText: "Username", - labelText: "Username", - isError: (errorMessage.value != "") ? true : false, - ), - ), - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 20), - ), - // textfield password - SizedBox( - width: Constant.getActualXPhone(context: context, x: 320), - height: Constant.getActualYPhone(context: context, y: 50), - child: CustomTextField( - ctrl: ctrlPassword, - isPassword: false, - obscureText: isPasswordObscured.value, - hintText: "Password", - labelText: "Password", - onToggle: () { - isPasswordObscured.value = !isPasswordObscured.value; - }, - isError: (errorMessage.value != "") ? true : false, - ), - ), - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 40), - ), - // button login - SizedBox( - width: Constant.getActualXPhone(context: context, x: 320), - height: Constant.getActualYPhone(context: context, y: 50), - child: ElevatedButton( - onPressed: (isSuccess.value == true) - ? () {} - : () { - if (ctrlUsername.text.isEmpty || - ctrlDokterId.text.isEmpty || - ctrlPassword.text.isEmpty) { - isLoading.value = true; - errorMessage.value = 'Inputan harus diisi'; - Timer(const Duration(seconds: 3), () { - isLoading.value = false; - errorMessage.value = ""; - }); - } else { - ref.read(loginProvider.notifier).login( - username: ctrlUsername.text, - dokterId: ctrlDokterId.text, - password: ctrlPassword.text); - } - }, - style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((st) => - (isSuccess.value == true) - ? Constant.textGrey - : Constant.buttonLoginBackgroundColor), - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(8.0), - side: BorderSide(color: Colors.red), - ), - ), - shadowColor: MaterialStateProperty.all(Color(0xffff48423d)), - elevation: MaterialStateProperty.all(4.0), - ), - child: Align( - alignment: Alignment.center, - child: Text( - 'LOGIN', - style: Constant.titleH3_700(context: context) - .copyWith(color: Constant.textLoginColor), - ), - ), - ), - ), - - SizedBox( - height: Constant.getActualYPhone(context: context, y: 22), - ), - - // versi - Align( - alignment: Alignment.center, - child: Text( - 'Versi ${Constant.version}', - style: Constant.titleH4Login(context: context) - .copyWith(color: Constant.textGrey), - ), - ), - - // text problem login - - // SizedBox( - // width: Constant.getActualXPhone(context: context, x: 121), - // height: Constant.getActualYPhone(context: context, y: 20), - // // color: Colors.brown, - // child: Align( - // alignment: Alignment.center, - // child: InkWell( - // onTap: () { - // Navigator.of(context).pushNamed(problemLoginRoute); - // }, - // child: Text( - // 'Problem Login ? ', - // style: Constant.body1_400(context: context) - // .copyWith(color: Constant.textRedProblemMaketing), - // ), - // ), - // ), - // ), - ], - ), - ), - ], - ); - } -} diff --git a/app_petty_cash/lib/screen/login/login_form.dart b/app_petty_cash/lib/screen/login/login_form.dart index 6690a96..8b1713b 100644 --- a/app_petty_cash/lib/screen/login/login_form.dart +++ b/app_petty_cash/lib/screen/login/login_form.dart @@ -78,7 +78,7 @@ class LoginFormScreen extends HookConsumerWidget { } else if (next is LoginStateDone) { isLoading.value = false; isSuccess.value = true; - ref.read(currentPageProvider.state).update((state) => 0); + // ref.read(currentPageProvider.state).update((state) => 0); ref.read(currentUserProvider.notifier).state = next.model; // print(next.model.model.doctorName); @@ -102,7 +102,12 @@ class LoginFormScreen extends HookConsumerWidget { Container( width: Constant.getActualXPhone(context: context, x: 390), height: Constant.getActualYPhone(context: context, y: 359), - decoration: BoxDecoration(color: Colors.grey), + // decoration: BoxDecoration(color: Colors.grey), + child: Image.asset( + "images/login_top_bg.png", + fit: BoxFit.fill, + // scale: 1, + ), ), Container( width: Constant.getActualXPhone(context: context, x: 390), @@ -138,7 +143,7 @@ class LoginFormScreen extends HookConsumerWidget { 'Silahkan masuk untuk mengakses akun Anda', style: Constant.body1(context: context).copyWith( fontWeight: FontWeight.w600, - color: Constant.textBlack), + color: Constant.textGreyv2), ), ), SizedBox( @@ -176,11 +181,11 @@ class LoginFormScreen extends HookConsumerWidget { decoration: InputDecoration( hintStyle: Constant.body2_400(context: context).copyWith( - color: Colors.orange, + color: Constant.textGreyv2, ), labelStyle: Constant.body2_400(context: context).copyWith( - color: Colors.orange, + color: Constant.textGreyv2, ), border: OutlineInputBorder( borderSide: BorderSide( @@ -190,11 +195,11 @@ class LoginFormScreen extends HookConsumerWidget { ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: Colors.orange, + color: Constant.textGreyv2, width: 1, ), ), - // labelText: "Nama Pengirim", + // labelText: "Masukkan Email", // hintText: 'Nama Pengirim', ), ), @@ -259,15 +264,6 @@ class LoginFormScreen extends HookConsumerWidget { ), ), - if (isLoading.value) - SizedBox( - width: - Constant.getActualXPhone(context: context, x: 20), - height: - Constant.getActualYPhone(context: context, y: 20), - child: Center(child: CircularProgressIndicator()), - ), - if (errorMessage.value != "") ...[ SizedBox( height: @@ -297,51 +293,70 @@ class LoginFormScreen extends HookConsumerWidget { height: Constant.getActualYPhone(context: context, y: 50), child: ElevatedButton( - onPressed: () { - Navigator.of(context).pushNamed(homeRoute); - }, - // onPressed: (isSuccess.value == true) - // ? () {} - // : () { - // if (ctrlEmail.text.isEmpty || - // ctrlDokterId.text.isEmpty || - // ctrlPassword.text.isEmpty) { - // isLoading.value = true; - // errorMessage.value = 'Inputan harus diisi'; - // Timer(const Duration(seconds: 3), () { - // isLoading.value = false; - // errorMessage.value = ""; - // }); - // } else { - // ref.read(loginProvider.notifier).login( - // username: ctrlEmail.text, - // dokterId: ctrlDokterId.text, - // password: ctrlPassword.text); - // } - // }, + // onPressed: () { + // Navigator.of(context).pushNamed(homeRoute); + // }, + onPressed: (isSuccess.value == true) + ? () {} + : () { + if (ctrlEmail.text.isEmpty || + ctrlPassword.text.isEmpty) { + isLoading.value = true; + errorMessage.value = 'Inputan harus diisi'; + Timer(const Duration(seconds: 3), () { + isLoading.value = false; + errorMessage.value = ""; + }); + } else { + ref.read(loginProvider.notifier).login( + email: ctrlEmail.text, + password: ctrlPassword.text, + ); + } + }, style: ButtonStyle( backgroundColor: MaterialStateColor.resolveWith( (st) => (isSuccess.value == true) ? Constant.textGrey - : Colors.orange), + : Constant.pcBtnBackgroundColor), shape: MaterialStateProperty.all< RoundedRectangleBorder>( RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), - side: BorderSide(color: Colors.orange), + side: BorderSide( + color: Constant.pcBtnBackgroundColor, + ), ), ), shadowColor: MaterialStateProperty.all(Color(0xffff48423d)), elevation: MaterialStateProperty.all(4.0), ), - child: Align( - alignment: Alignment.center, - child: Text( - 'Login', - style: Constant.titleH3_700(context: context) - .copyWith(color: Constant.textLoginColor), - ), + child: Stack( + children: [ + (isLoading.value) + ? SizedBox( + width: Constant.getActualXPhone( + context: context, x: 24), + height: Constant.getActualYPhone( + context: context, y: 32), + child: Center( + child: CircularProgressIndicator( + color: Colors.white, + ), + ), + ) + : Align( + alignment: Alignment.center, + child: Text( + 'Login', + style: Constant.titleH3_700( + context: context) + .copyWith( + color: Constant.textLoginColor), + ), + ), + ], ), ), ), diff --git a/app_petty_cash/lib/screen/login/login_provider.dart b/app_petty_cash/lib/screen/login/login_provider.dart index 14c5cc0..20dd5c2 100644 --- a/app_petty_cash/lib/screen/login/login_provider.dart +++ b/app_petty_cash/lib/screen/login/login_provider.dart @@ -20,14 +20,14 @@ class LoginNotifier extends StateNotifier { final Ref ref; LoginNotifier({required this.ref}) : super(LoginStateInit()); void login({ - required String username, - required String dokterId, + required String email, + // required String dokterId, required String password, }) async { try { state = LoginStateLoading(); final resp = await AuthRepository(dio: ref.read(dioProvider)) - .login(username: username, dokterId: dokterId, password: password); + .login(email: email, password: password); // print(resp); state = LoginStateDone(model: resp); diff --git a/app_petty_cash/lib/screen/login/login_screen.dart b/app_petty_cash/lib/screen/login/login_screen.dart index 23b1933..e71f394 100644 --- a/app_petty_cash/lib/screen/login/login_screen.dart +++ b/app_petty_cash/lib/screen/login/login_screen.dart @@ -12,7 +12,6 @@ import '../../app/route.dart'; import '../../model/auth_model.dart'; import '../../provider/current_menu_provider.dart'; import '../../provider/current_user_provider.dart'; -import 'block_body.dart'; import 'block_bodyv2.dart'; import 'login_form.dart'; @@ -30,18 +29,20 @@ class LoginScreen extends HookConsumerWidget { final authModel = AuthModel( token: xmodel["token"], model: AuthDoctorModel( - M_UserM_DoctorID: xmodel["model"]["M_UserM_DoctorID"], - M_UserUsername: xmodel["model"]["M_UserUsername"], - M_UserM_DoctorCode: xmodel["model"]["M_UserM_DoctorCode"], - M_UserM_MouID: xmodel["model"]["M_UserM_MouID"] ?? "", - M_UserID: xmodel["model"]["M_UserID"]), + // M_UserM_DoctorID: xmodel["model"]["M_UserM_DoctorID"], + M_UserEmail: xmodel["model"]["M_UserEmail"], + M_UserUsername: xmodel["model"]["M_UserUsername"], + // M_UserM_DoctorCode: xmodel["model"]["M_UserM_DoctorCode"], + // M_UserM_MouID: xmodel["model"]["M_UserM_MouID"] ?? "", + M_UserID: xmodel["model"]["M_UserID"], + ), ); ref.read(currentUserProvider.notifier).state = authModel; - ref.read(currentPageProvider.state).update((state) => 0); + // ref.read(currentPageProvider.state).update((state) => 0); Navigator.of(context).pushNamedAndRemoveUntil( - menuRoute, + homeRoute, (route) => false, ); }); diff --git a/app_petty_cash/lib/screen/splash/splash_screen.dart b/app_petty_cash/lib/screen/splash/splash_screen.dart index 4a80b1a..157d58d 100644 --- a/app_petty_cash/lib/screen/splash/splash_screen.dart +++ b/app_petty_cash/lib/screen/splash/splash_screen.dart @@ -52,8 +52,8 @@ class SplashScreen extends HookConsumerWidget { width: Constant.getActualXPhone(context: context, x: 390), height: Constant.getActualYPhone(context: context, y: 844), child: Image.asset( - "images/splashscreen.png", - fit: BoxFit.cover, + "images/logo_splash_screen.png", + // fit: BoxFit.width, // scale: 1, ), // color: Colors.green, diff --git a/app_petty_cash/lib/screen/transaksi/transaksi_screen.dart b/app_petty_cash/lib/screen/transaksi/transaksi_screen.dart index 48d5a87..5f10a17 100644 --- a/app_petty_cash/lib/screen/transaksi/transaksi_screen.dart +++ b/app_petty_cash/lib/screen/transaksi/transaksi_screen.dart @@ -648,7 +648,7 @@ class TransaksiScreen extends HookConsumerWidget { // Upload File Container( - width: Constant.getActualXPhone(context: context, x: 336), + width: Constant.getActualXPhone(context: context, x: 390), height: Constant.getActualYPhone(context: context, y: 83), decoration: BoxDecoration(color: Constant.bgUploadFile), child: Column( @@ -657,12 +657,13 @@ class TransaksiScreen extends HookConsumerWidget { children: [ Icon( Icons.upload_outlined, + color: Constant.pcBtnBackgroundColor, ), Text( 'Upload File', style: Constant.body1(context: context).copyWith( fontWeight: FontWeight.w600, - color: Constant.textBlack), + color: Constant.pcBtnBackgroundColor), ) ], ), @@ -684,6 +685,20 @@ class TransaksiScreen extends HookConsumerWidget { width: Constant.getActualXPhone(context: context, x: 336), height: Constant.getActualYPhone(context: context, y: 42), child: ElevatedButton( + style: ButtonStyle( + backgroundColor: MaterialStateColor.resolveWith((st) => + Constant.pcBtnBackgroundColor), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: BorderSide( + color: Constant.pcBtnBackgroundColor, + ), + ), + ), + shadowColor: MaterialStateProperty.all(Color(0xffff48423d)), + elevation: MaterialStateProperty.all(4.0), + ), child: Stack( children: [ (transaksiIsLoading.value) @@ -700,7 +715,7 @@ class TransaksiScreen extends HookConsumerWidget { 'Simpan', style: Constant.body1(context: context).copyWith( fontWeight: FontWeight.w600, - color: Constant.textBlack), + color: Constant.white), ), ], ),