From f795ba24c5f8cba97a8385c674bf81916b5edb0f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 14 Sep 2021 12:31:31 +0300 Subject: [PATCH] updates & fixes --- assets/images/new-design/NFCIcon_option2.png | Bin 0 -> 11672 bytes lib/config/localized_values.dart | 12 +- lib/core/service/insurance_service.dart | 36 +- .../all_habib_medical_service_page.dart | 20 +- .../health_converter.dart | 124 ++-- .../health_converter/blood_cholesterol.dart | 4 +- .../health_converter/blood_sugar.dart | 62 +- .../health_converter/triglycerides.dart | 2 + .../AlHabibMedicalService/parking_page.dart | 71 +- .../​ health_calculators.dart | 649 +++++++++++------- lib/pages/Blood/blood_donation.dart | 93 +-- lib/pages/Blood/user_agreement_page.dart | 2 + lib/pages/BookAppointment/QRCode.dart | 64 +- lib/pages/BookAppointment/Search.dart | 5 + .../BookAppointment/widgets/DoctorView.dart | 9 +- lib/pages/ToDoList/ToDo.dart | 53 +- lib/pages/landing/landing_page.dart | 23 +- lib/pages/login/confirm-login.dart | 1 + .../my_invoices/invoice_detail_page.dart | 34 +- .../medical/my_invoices/my_invoice_page.dart | 9 +- .../product_detail_service.dart | 2 +- lib/uitl/translations_delegate_base.dart | 12 + lib/widgets/drawer/app_drawer_widget.dart | 2 +- 23 files changed, 697 insertions(+), 592 deletions(-) create mode 100644 assets/images/new-design/NFCIcon_option2.png diff --git a/assets/images/new-design/NFCIcon_option2.png b/assets/images/new-design/NFCIcon_option2.png new file mode 100644 index 0000000000000000000000000000000000000000..938eec27b1220b57864e46276797a922f4c51451 GIT binary patch literal 11672 zcmc(FcRbZ!{Qvu27uU6}l~K5|x2$}!E+u1ctc28(7(&!Z90SO3Tc#d^)7H3ZW5E7ifd z{e1(=LH*Dl_^UJt&goP8dTod{F%+~^JT_CD5MzGTlGebr)cC9&mGHsBE9y|nb$!;| z4SXP2NlrRpFO_X&X7RYl?~TjZ*W=d=v|!~#2r5cL=C3*Gyge_Dvlv3K)3>~ZQ&T}S@oFoT(Y3Y{FRj})ibaNvJj2H zKmL{%bmfC}sHmoCE@r1fwdNWYI&orQTe)b$bFl5$&D$dbQ7R(r%uUtH;wXrV)VMFA zz5eh-Py<<+2+!glgC)r4H(J)J3hJ-g&o~xiikmtw1Imc0X*7p4iRq@u(qW6&kR4+x z4mA1#MF{T7ZoN4=Xre{JQ&iu;Tu5kAVE5taZ%6S0XkIbM#w=&A>fWL;gk~TDZaP&q z#k~@V6f6>wl-UtKoJhoj&u)QTt|PDEkVJ^W<2*a)t?G^D+zgSs6$44*qF;WU5_IJHnh1u$?^}E8lxfm}U&pBXI%r=J zHi_N(S?le&RGpz+KY}`kBcN!W*htG$JWnp@B-40*xqC|C4*4LFKfJW<8Rbr(p@_F* zgfqj4@x5)|xVXBt{%T{3o6z0>?VPDT*<41BBNtewcpt#V>9`tIN#;ym;^qQBbtpAdzRiCllU4^aoer<02XdB z==AYU8qb?ggvk5Eg6j&`Ce*&A-{{9L1p;}=)!n6Hk?Dh%N4$ zLCW{JREWsj#6sxdU7xe$J2~I~Zph|+>s<(oxn9l?sj7=t?h*nJ`MgVWi*Wlj8u9D# zv0!hn&H$-C28+v+I25HRqD1@VZr73(6JcQW7vGF)e+X)2mSVp+cbcGo><8LQ26kP1R+a% zmK2xWB4!7C6x`e{rDLq>&Zin`05ky&<+=t*A6(v*&D(gW%7>zl=ru{m%ROAjvFV_} z^RL0y)PYhd;@g=vfW41K0^fy~9NmubJH+-v4jYFBmJZ2DIuLDQ7$0%`>z!0>Mv7J8 zZfXL)A?QVW1+ESq>`9bK0H}p*Y7DITW)#>|vtM5}T@>_ECs@_*G#!-e5 zkp0NyJoF!R%J)OTTx#gloTT^qRlGFM$D zOviV5eU2iSMoCfUwUFS|S=MWkibM9{g_xAj&z!RXjFI11Alnk<+AeXUMycO=LM#K+ zkH;+1JG$MFZ7_bRS4E2*hpwCbeA&c7*bst#Yi4V#@pRcSaiiRfsD<%e&eElP4D$kL zsG&Z5)iYgU3z)E#!h_4LNe{Gx4^R*%*jWM%$ROnYaBjz|)tnXv9=Gana23^dU`t1Y zz5fORteW`erG?55q$&g(GH^oc!DAB35&z4iuECTBlM^>&dD0NwlymNOpH zb7o<9rsNrl)gn2F_ydQHQ@WA$8V?yzYsY3hWb5u`0v52+YG-gTZb>o}Su6(-ann_Z zN#q5`32zcExN?)*VV#*Sn(HTviAyr?3!;FyWWO6z@tWGU@8-DM0A#I3Sdmo4`h@ec zm)%+4#FrsxChlKz`>%3j%8?43K+1KVqDIWsWx-lH zP{VuqPz-;he+C|I#Q3`%`yKdiu*~bg7B%)}Kbx6egUI%tq7-Ql6dWQ-)gNrauMoPFQ>cMX4*3V_}CnFTCaMvmdC>I zaDy$DQxe@?3unz5N%lj)NHb0_(N^WADQdb51g54OYRp*4+>bK6~-U=n$}V@}A-3MTFv> zK#?PT`);wXW?$A_-bN>Kr$s09gboe zFt^j(4|Z=$2NM)fVWJ8}#v6 zZ2qOE=U@2Hqf*FMEM)tl;Fa<;r!NPxN}oJ1c%E5E6Zj>0rYkK14KHEZYsXwfQ+@GqP_CP&p;b2Fb=#E-`mn zAN(3zOd0qmg+5+pIHMZ3RR4Ke;kVnIl%ZJ!*KS?l3y^hE6a;P5L2nAK$EhI&p7MvU zGrh0;hsg^aw}NxBKX^ZV*rUu|8N=K@-LaAN(e)a<(eKV2OXB>Y?GZ~BaM})vY*-lI z6QP(-#p91@4NlsAKIpr-_r>#a3^UtfG3(rx>FzXEQ)5-#r(D2IPchb8wd3X0(F+D4( zK^k~z%y9P9rqIfI{ozHXHbXml_R(&DJ#D$op#Ddu^o0<$(IEKOzeNUc=n5%q%=i9f zH^$NmCK)v1peGLzg;Z>Zg58xomJh4Vma8&O}94$iumd=tB1MleqnDML##5t zo9jP2Gyv@xmaM+>>`TpNUV)x;3SZ)}r%k*3iK~Gry_Grk=CMj;k3m%S2Ktv`7z@wr ze#)3E&9;3Jt8+23;X^d7XHGWWtnoiYQ|6B3S-uj^mM_^!lrz`5Po1#-Q48mCZ_X}n zjh)`9n-y)^nQNtm(w2<(22oIMvhneL<8!aH$2@Qbl=?DNw9FMnrN=IXCmZ|X)}jur z{)tj|8$L(@5q_RnMjW4b(bFSQ>Sz4s>(^hQ(~e^-Kx)$Q6nP=Dvo03p^3kY zKuu&6is<>i@JEI}#r4@`Qg?Eu<3FGAXka0%d)7tsBsS{dLm~2IGs<*6-NC&yDf~7b zq?d)Ov6ZAd%cI^j!mF^-V8)z=7U0cb8O8AOqiAG(c{$qm_vb-J_9bVQ)5HA0!(j6s z6#1iwu|>=X$!5esAg;bB_1&514Lq1u7kK)K6}H{U$cPeo32xkR;6v3~(qVL>ka|Ib zK8uNNBTcK8wGIqA)+{zG5Vk}y@`*TlLcZ}Zbw|cM&xjxxWFeMA=Aja`}zr%$mmG9IAsb&6|ASCU*T zgxg{KsH?l@x2_DJ8gILN|1ThahY3+&{)>AXd9`cd5Qs|HJ4p<{_(_+hak$71>H zYIj{#k}jsi9J*T|T`EX|8=6;jZNJdRlRZ8ma7NhnS9VyCnOLyw7N5P31F5Zl{{J03 zm_!M5=dX*;!BXr0Tbf+808{d+=`LqtL=wGO!Q?x~8nv?4q%8l>fCLS2<1Y;;({7uH z9md_Xt62aaHf#ns&mTD4LFTe!cH`onnXp70y|iI-2n^QbLuialU71ot={TLBo1id| z;3ETy58CS*g_4qUYvmOfCQNBYRfi~WA;inX2pSSN0fZv z1vDK{rA)gkeSNFXKrA-{rua$;T{?8c8sS-;urn&P7`MOs>&sGJ_cXJO1vu?~ve(yX zb_@EvhTn3{WFlr|G{{fJ;~V=dc`rV;Ph>?dwO%c&L#y%QigHC zVuN)_)t^Fy^7A*69|YSU1R%u$WXN(L=aBfHp&xX-yHIgwjzM@Wzzr`G(Gr0>bDzrU zS>RL503}|-k*rT)Ww;^k@x0}vr~nQ+Dme^r1@Sl=b!gK=j6B1J@GJ$5JfQId&PEG5 zpSZODE-4>m^gwB=SX2ZHbZgo&p>}EDpaFn|IuN)}0;LK;kzVaXumD`LfsOsq$Q>r= zQWuIogar)2B;W=4AVZiQM84qA6HjpHL@h>m&%YnZ=*vigWpv~5e0)#@`x-cO<6M9qwNZ#G&|%=Lu^OOTF&;wTZ0TFj z4G@b$LtLO}q(TI+wZ!6}6L&#C0#3b!&j5zJfDOU2V2S%UJfsp2dJX}1e{_=vng`-m zxrHNNFV5TfC(3Qt^?Q)fa_gn<7( zJKR(9kSY|rsv)_O4tV255yu~)q5K%3d>y@42T}k}Vq)mGFN&(Wi}9;sIJ$;m1!m&V z`kKCNFuTx$?FJ?Q1*|h0@`%XnFGUn62naYj&flJaptfhcsI$8L-Mb=)KURZ28i_!} z2G6mmvw8!APUyPTwWcRgdE9jJ+&>!N)tn7Em>m zcnDR2g5QP;y7jH#tECM<4*OQ-EzU~{YJaBXX-QPG?#}%%ILy**K-a6I7$d?QEL#S9 z>MU|CfvOblf*1-BfWR#uLaJA?EeRq4LRAbxu{8qF1GSXy$}&-kkHD3aKs&_uI4@PG zJtmksx0R{Ectu~E2sDeaG@$r1;y|G78Q}dbk7|mQ0@Nye!J-tH>H9dv3XARb@&lB4 zC3oWh(VG?p*n+)AD_F*|*fM(TgvWo44se7Ak-ganY|LqV-dy88N-#8!n- zuGcf3Aex-ULrW=Fp@&7XDs;TT5Y@S{Pj@xSixisOyyHNbwx>K%p@Uov33KQjMDkqQ zgFsZN&Jm{z-3YS53nBHdv~cGj3Fm;u*3i(E%^>sxKNlgHhwX!3+s|%wqkv^zL_=ou z8Uv;nSzC#*3BRKX8i7l0Sc}aUkf{yqt0?|Qz)etx6lJ$VeADB!2ch^p3i1Z%?p}RH zIpNBOUuRz0%Ap53VI*wjgsDn$K(u~x{F6x!5~@hp(5xJK)yctTrn8t+x6+LUTa*HN zPBET7EH4?G$4{E5Oalgn=0f1hKuNTSjG+#^c`irQ06>ueWy-Wh_i=e7_q8r0Pq!Un zwW*8?bda!6Sfg!?GTi4B%-$7y9Uf&*2kzd`0J5>jYK^lEz83jS2sz1XRPaOQl|C?L ze4`)&hjv+LDML18y0SzqEHs$;*7Z^aHCiK(mpQ&spyXY18l+Su6qkCtHRayAcrv)HSm zFSqY+eDTdc)IkYTNO@iG{N(D}y%1@iD~;X1!`6elsV}d`61nm-(k|c?BgciZq*@+D z%i$h!le(JEFdWqinZ7=;K_N&nKT=M@1hI(j>NA458DLHbUk5m-#A?eHa)MlD%`PV{&aUvsrgV z5P2YX+ZT#pRq97-R}&|_7Ms2!D2RM$kARVRKcgA=hf z?fflw{`jg}>j7acbWOB{7TO6hjn;l;4p?M}S2?B1PO@QaH$uyFoR~`FdJ0yw5L#ES z2)C+lAxg)~sDnyXwwWV?MA8$;xTVA_sUic1;tju<@NedUBaXgkIpV4*{ zkj_QMIjqU~RwCDQ^l5>qgj-k}x8pNXyh8~YG||klz3HvlV&*UpAqA2iWGTEU_XK(! ziI!Q@<3hd+{XBMB=X{cn%c&0phtDj?C0{Z%k)n|406A;?*a<(3vVS|4ENr}$E_itH z$2l(qE?lXPA0Iez(@U`n!80suGdHWaXooO*!zJc*)NY&Mwd7)6@#iV`SbufvSi%Eo(DZdv7tg zrT_D-M0iZ&UM{<>evd5dz%kU%?U2^^t?YIA{Q)_+v14iMsOE67bv(AFAk^&H4^r{x z)%L3uc6te=h8HB^mr$^p2>T1iv*1!D<6`5L1Z+*KUUK|)N6cftz|i~KYo%lhZb-fA zfwN3qpT~#DYiH*QGguHi=foeXy!FtWUcF%}!vTFR>P;rbyBxR&l=R_YueieU6O7IK zIGF!**+XL zSnhPl#+ppZ*Hj%B$;B57osXQJ--uaf#ruIe9e&sYD!Ue6wd3~3>eamdc;mff<2RL; zn9zvHkbqYuVBnksv1Is7bJqL3uB3zE7gPl<#db@Q*3N$qE(i$e9?sPrt=5%3BqJB9 zQ1c!lwSR_lp12D+%Fl-#r-b3RnA9<|xP+k0%=>f0Z}u*K={XuxN0W_QFt$}3es?t5 z3JIB|&LDb(pbJTnOkZsohx{+W3WoSC4heKm>7-|7SGdvz&JFFjBc=kue8k&|`)V6E zcCCwZZKNhG;ajl_aRnW%x30s_`oDvFDcE0q=&jMUawZFYX#FZ-l6Fc0{rD4M-u6~+ zyA}M6v!|g~hn@TwLz?FSNoN1nkZ*pe;+c0=#pla6LmHLDp~n-n%%d7LB+BKfa%OK` zX{-qpe1qzHDYkz}nDENl2EcL7yfC^qX^YvuBFXCKaFrc&(5(}u&DN(${HLTA40SBN zfz^W;9~52Dz(0C|sd1vux%660*~6ZzMee=_sd0B+bfWeL=><*30py(p&leF7$kD~& zc4Rho2e>j4?e?C#ZMH}o^HOGJ;JBgFu=nT2r0I#Bkmg#4;aWlK8L3Vyz^nu zN%uEfa-bV~?#U^0k^U!-Fg7!zk5MP&PRitcq*){X)7x=e4WY2H57x;PBJyV7?FU`5 z5v3l(JL(EU5Jn7KXD(<@i;*A|&L1bs=q1=_U1o2K`!+14gHFSzNXZ`M4iRXwP6`?2 zxNqIN2i0yM+ULqAFH~jBN{ErK+8y-~jwZmae9J|zX|#faQ=hu_e~P1U0wFnLIC!d6 zA@Z0P`lxZ7Wc8e-^NutYIU9*fz__wHkssv=m5t(?p>)5sm5@F zw5t$!;+p+Np`sh|4SyfzecaP$6o7(|ekcq7W68BQd&?n~OsM*Ekv^R+y7Ycvgc9S9t#@r zu3rBp;YP?)=ry0|u)cgLgi~j%wsk_C=R#saM&4`YNDl^yKfoyoc$b|WM|c&1cq)<5 z?JSW%;64kH{9tR0lBC11s+l3>z^L;|?_2(FE^g+XR$bl&C(%t}jl1qAwKN3ILOq)7 zOO@qvctiA%sddEexnP_2ytZ-Q{ERDSo_$g?XFMh6{A)bjSRr!HS@hqPf5+;j~Y6unY7e$0RgDr@)6VfyXVoCe$; zL;XmYXqIT3dlP$#hm)2AH`<{B~#vd67{z_fYaaQPCF=8tGqU{OvQ0jm~W1p>j;SH<`ovjOsYoi%)GIE7kpsoB;J|Fd$Hd^xLRDyi}U%7ofdV>^@ebt ziq7vgziPhd_+2KEL_@SbpW{1NG;h8j@;qVx=?}lqA^SJr;ea0fEx_wWk|we_*Wy8DpeLTZYv+n+v5hb}M zx7JL*-&+c_xrtlAVGAoX9q=fjKE>5xiE9+1g{jACD z~6aFh*CsC-!y8x>rqQ?suW)Nygn4@N*NqrqsO6PkTXelou_*85y-$p&&L(R zyZXfkrylgl#)oyXEX{!1Y^Hi7PBIzJS!XbbcD`+SG`!gS6 z>r%l>-(%;JAieq(TEVX`D!Nql}FrPt$6K^Kb)}XB-_6+z}~sA zFviHVvDoQ0(Gq#s^RdvWet$+Uu`XJ?60L+D`)10ys(0jTPShAyowDg{$>Dfh^Sk_~ zyRf?hwJ`?dO=`~R3nG3prT&%mG2dGceoEJNwrxLoT&62efp+_+nxr<;e{}e7?jnX& zjC>Y=)|>@d;ktfe{c>GZ*});>vSoYC*JrLkJ1*_{e+`26pPM!I{gKuEbcgFfx(Fj&U zXq~F3&;RR74WIdz{+2LQtEuJ@;8!bw`kHvsfHtAKdFV&VKsK4>;#{t_blV3h4Tnw? zlsv8XQC;x`7-SN`+oZY5AU|=JkR@sTW!L18R-$lSF9E!98ECN#?B`u%Bt4#1l&QPR zug)~^5!?$EQjP8O>y&1mQXY!ZDi&B7XFqupwn?0O9g+zAYQZ1*z!60|mZgNsYr35m zr+BwxdeUV%ywbxy(YO$lT-RjF>_mw3Ja+br%x`Oy0oBmT3^m}~&O33+!kyNIL_?vK z4%&vWbO^Jt>|i0BK)JS-4MjgopgCMz-FHTyAmcw(w-ce139Gv&4N_DMs7i2GxaYhj z5*koZ+m!x+g1d84+>4L&sQK~g*ftauvG`$0330V~NAg3&Chru%?MJeU)zlD2ND%oM zC+;?u{HADLS@g=QD?Jh=b2khQ|-9X zbPu9@*?|4uNww@f8uP~;@pDprb_qkdyP7OAP%LZN(F82{j{IKd-FS73Tq+BLs08{! zM^b!T>m9e}1&vQ~pUrTp_7Vx)eMG$-(l7W$KGVHPAwO(+13h!z%UBV;N4y}IALPE0eX?SV@O_0}cfsKvvS|b%SaRg?4OLo!3FP~(wjlu&VDN!R zMVj;xCOFXyg2+m}d!jB|`nNP732?fG9MT(USIIt)>iWf-Palmsi~?^L#6J-dU`<+w ziwPs{+ny-k5bg!1CkL+p+Ve-85DR^$mz2eQ9(e=~6bzuw!;!S0C7Qs}ZGS09qJjh5 z-Whz}BVcr(j|z9l;-`T^ecV$(jzJ0(kM#u zXWMu^C;~Hp$0>ACEGewCjenKG8-e?Jik9DIfeMcl8C6w$d0 zdLtoYG^Y&OhB4sZ=zPy5Z;^q;_3WoRp0|K@sHyXVgpXv;_Pan1bMS4k{M9UVd_|wja<^W)d+hAJt?h5Y8}y4K zm?W$;7VSDBbyPDlWW#!zUPRa6EvcsYRvpcLrka?{t8Aet878ZxQ_&*6kv;sUV(RS(0W}6?F7@l>|(2XB7mZp@TRo- zmKb;q21gxPI;RLWe(SBoK+7PC=7OoXSn%|Vmb$@1M;=Z`?I<<$RZ1NA#`m@6WZE$nTylPWqm#a2K|R~LGNi7B*IS)QK2YyfW24m zN+9&>ryp*IMRwij^n4sfBBXt=u76JW`B@}qs|vN-v$q1#-zWB)cspb6z;+Se-sCe=-U!+y`!9p4uChJm8q0(QksmRRt*UK@_?ep_71G zNF@od4xa)XLwD#>_X3X-Aqc#g1a<>>{~s7S+uSW0qa)PvD}nj<;6j+IY1%He68Y0m z@_(3)|8+t9{~>@b-o~++mzz|Cf!0(Y^5-uNl!WPu_ { Navigator.push( context, FadePage( - page: MedicalProfilePage(), + page: MedicalProfilePageNew(), ), ); }, @@ -197,9 +199,7 @@ class _AllHabibMedicalServiceState extends State { onTap: () => Navigator.push( context, FadePage( - page: BookingOptions( - isAppbar: true, - ), + page: Search(), ), ), imageLocation: 'assets/images/new-design/booking_icon_active.png', @@ -230,7 +230,7 @@ class _AllHabibMedicalServiceState extends State { context, FadePage(page: CovidDrivethruLocation()), ), - imageLocation: 'assets/images/al-habib_online_payment_service_icon.png', + imageLocation: 'assets/images/covid-car.png', title: TranslationBase.of(context).covid19_driveThrueTest, ), ServicesContainer( @@ -276,7 +276,7 @@ class _AllHabibMedicalServiceState extends State { page: MyFamily(), ), ), - imageLocation: 'assets/images/new-design/family_menu_icon_red.png', + imageLocation: 'assets/images/new-design/family_icon_bottom_bar.png', title: TranslationBase.of(context).myFamily, ), if (projectViewModel.havePrivilege(35)) @@ -296,14 +296,6 @@ class _AllHabibMedicalServiceState extends State { imageLocation: 'assets/images/new-design/upcoming_icon_bottom_bar.png', title: TranslationBase.of(context).todoList, ), - // if (projectViewModel.havePrivilege(42)) - // ServicesContainer( - // onTap: () => Navigator.push( - // context, - // FadePage(page: SymptomInfo()), - // ), - // imageLocation: 'assets/images/new-design/body_icon.png', - // title: TranslationBase.of(context).symptomCheckerTitle), if (projectViewModel.havePrivilege(36)) ServicesContainer( onTap: () => Navigator.push( diff --git a/lib/pages/AlHabibMedicalService/health_converter.dart b/lib/pages/AlHabibMedicalService/health_converter.dart index 5ae80183..27c2a05c 100644 --- a/lib/pages/AlHabibMedicalService/health_converter.dart +++ b/lib/pages/AlHabibMedicalService/health_converter.dart @@ -16,9 +16,13 @@ class HealthConverter extends StatefulWidget { class _HealthConverterState extends State { @override Widget build(BuildContext context) { + List myMedicalList = myOptionsList(context); + return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).converters, body: Column( children: [ @@ -26,72 +30,66 @@ class _HealthConverterState extends State { width: double.infinity, height: 30, ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: BloodSugar()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bloodSugar, - imagePath: 'blood_sugar_icon.png', - subTitle: TranslationBase.of(context).sugar, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BloodCholesterol(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bloodCholesterol, - imagePath: 'blood_cholesterol_icon.png', - subTitle: TranslationBase.of(context).cholesterol, - ), - ), - ), - ], + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: myMedicalList.length, + itemBuilder: (BuildContext context, int index) { + return myMedicalList[index]; + }, + ), ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: Triglycerides(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).triglycerides, - imagePath: 'triglycerides_blood_icon.png', - subTitle: TranslationBase.of(context).fatInBlood, - ), - ), - ), - Expanded( - flex: 1, - child: Container(), - ), - ], - ) ], ), ); } + + List myOptionsList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BloodSugar()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bloodSugar, + imagePath: 'assets/images/new-design/blood_sugar_icon.png', + subTitle: TranslationBase.of(context).sugar, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BloodCholesterol()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bloodCholesterol, + imagePath: 'assets/images/new-design/blood_cholesterol_icon.png', + subTitle: TranslationBase.of(context).cholesterol, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: Triglycerides()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).triglycerides, + imagePath: 'assets/images/new-design/triglycerides_blood_icon.png', + subTitle: TranslationBase.of(context).fatInBlood, + isPngImage: true, + ), + )); + return medical; + } } diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart index ac31b98c..1b25f443 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/blood_cholesterol.dart @@ -7,7 +7,7 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/services.dart'; -const activeCardColor = Color(0xff70777A); +const activeCardColor = Color(0xffD02127); const inactiveCardColor = Color(0xffFAFAFd); class BloodCholesterol extends StatefulWidget { @@ -65,6 +65,8 @@ class _BloodCholesterolState extends State { isShowAppBar: true, appBarTitle: TranslationBase.of(context).bloodCholesterol, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, body: Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( diff --git a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart index e9369b82..ebc41150 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/blood_sugar.dart @@ -1,13 +1,12 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -const activeCardColor = Color(0xff515a5d); +const activeCardColor = Color(0xffD02127); const activeTextColor = Color(0xffFAFAFA); const inactiveCardColor = Color(0xffFAFAFA); const inactiveTextColor = Color(0xff60686B); @@ -81,6 +80,8 @@ class _BloodSugarState extends State { return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).bloodSugarConversion, body: Container( padding: const EdgeInsets.all(16.0), @@ -89,13 +90,11 @@ class _BloodSugarState extends State { Expanded( child: SingleChildScrollView( child: Column( - //crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( margin: EdgeInsets.symmetric(horizontal: 8), child: Text( TranslationBase.of(context).convertBloodSugarStatement, - //textAlign: TextAlign.center, style: TextStyle(fontSize: 20.0), ), ), @@ -105,13 +104,11 @@ class _BloodSugarState extends State { Container( color: Colors.white, child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 16.0, horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 8), child: Column( children: [ Padding( - padding: - const EdgeInsets.symmetric(horizontal: 16.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Row( children: [ Texts( @@ -144,19 +141,16 @@ class _BloodSugarState extends State { boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), - spreadRadius: 3, + spreadRadius: 1, blurRadius: 7, - offset: Offset(0, - 3), // changes position of shadow + offset: Offset(0, 3), // changes position of shadow ), ], color: cardMGColor, - borderRadius: - BorderRadius.circular(3.0), + borderRadius: BorderRadius.circular(3.0), ), child: Padding( - padding: const EdgeInsets.symmetric( - vertical: 0.0, horizontal: 18.0), + padding: const EdgeInsets.symmetric(vertical: 0.0, horizontal: 18.0), child: Texts( 'MG/DLt TO \nMMOL/L', color: textMGColor, @@ -180,21 +174,18 @@ class _BloodSugarState extends State { height: 65.0, decoration: BoxDecoration( color: cardMMOLColor, - borderRadius: - BorderRadius.circular(3.0), + borderRadius: BorderRadius.circular(3.0), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 3, blurRadius: 7, - offset: Offset(0, - 3), // changes position of shadow + offset: Offset(0, 3), // changes position of shadow ), ], ), child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Texts( 'MMOL/L TO MG/DLt ', color: textMMOLColor, @@ -229,8 +220,7 @@ class _BloodSugarState extends State { ], keyboardType: TextInputType.number, decoration: InputDecoration( - labelText: - TranslationBase.of(context).enterReadingValue, + labelText: TranslationBase.of(context).enterReadingValue, enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.white), ), @@ -240,8 +230,7 @@ class _BloodSugarState extends State { focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.white), ), - border: UnderlineInputBorder( - borderSide: BorderSide(color: Colors.white)), + border: UnderlineInputBorder(borderSide: BorderSide(color: Colors.white)), labelStyle: TextStyle( color: Colors.black87, ), @@ -275,8 +264,7 @@ class _BloodSugarState extends State { style: TextStyle(fontSize: 35.0), ), Padding( - padding: - EdgeInsets.only(left: 4.0, top: 10.0), + padding: EdgeInsets.only(left: 4.0, top: 10.0), child: Text( unit.toString(), style: TextStyle( @@ -299,18 +287,12 @@ class _BloodSugarState extends State { ), Container( margin: EdgeInsets.symmetric(horizontal: 16), - child: SecondaryButton( - label: TranslationBase.of(context).calculate, - color: Color(0XFF515A5D), - onTap: () { - setState(() { - _visible == false - ? _visible = !_visible - : _visible = _visible; - calculateBloodSugar(); - }); - }, - ), + child: DefaultButton(TranslationBase.of(context).calculate, () { + setState(() { + _visible == false ? _visible = !_visible : _visible = _visible; + calculateBloodSugar(); + }); + }), ), ], ), diff --git a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart index 7c821055..35184f7b 100644 --- a/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart +++ b/lib/pages/AlHabibMedicalService/health_converter/triglycerides.dart @@ -67,6 +67,8 @@ class _TriglyceridesState extends State { isShowAppBar: true, appBarTitle: TranslationBase.of(context).triglycerides, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, body: Padding( padding: const EdgeInsets.all(16.0), child: SingleChildScrollView( diff --git a/lib/pages/AlHabibMedicalService/parking_page.dart b/lib/pages/AlHabibMedicalService/parking_page.dart index f3620917..864beb98 100644 --- a/lib/pages/AlHabibMedicalService/parking_page.dart +++ b/lib/pages/AlHabibMedicalService/parking_page.dart @@ -1,16 +1,16 @@ -import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:maps_launcher/maps_launcher.dart'; -import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:provider/provider.dart'; + import '../../d_q_icons_icons.dart'; class ParkingPage extends StatelessWidget { @@ -21,11 +21,11 @@ class ParkingPage extends StatelessWidget { onModelReady: (model) => model.getIsSaveParking(), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).parking, description: TranslationBase.of(context).parkingDescription, - imagesInfo: [ - ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true) - ], + imagesInfo: [ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true)], body: SingleChildScrollView( padding: EdgeInsets.all(12), child: !model.isSavePark @@ -61,10 +61,7 @@ class ParkingPage extends StatelessWidget { child: Container( height: 150, padding: EdgeInsets.all(8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: Colors.white, - shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, @@ -86,16 +83,13 @@ class ParkingPage extends StatelessWidget { Container( padding: EdgeInsets.all(8), width: double.infinity, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), height: 70, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).showMyPark), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.floorDescriptionN - : model.qrParkingModel.floorDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.floorDescriptionN : model.qrParkingModel.floorDescription), ], ), ), @@ -103,8 +97,7 @@ class ParkingPage extends StatelessWidget { height: 15, ), Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), padding: EdgeInsets.all(8), width: double.infinity, height: 70, @@ -112,9 +105,7 @@ class ParkingPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).gate), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.gateDescriptionN - : model.qrParkingModel.gateDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.gateDescriptionN : model.qrParkingModel.gateDescription), ], ), ), @@ -122,8 +113,7 @@ class ParkingPage extends StatelessWidget { height: 15, ), Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), padding: EdgeInsets.all(8), width: double.infinity, height: 70, @@ -131,9 +121,7 @@ class ParkingPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).building), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.buildingDescriptionN - : model.qrParkingModel.buildingDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.buildingDescriptionN : model.qrParkingModel.buildingDescription), ], ), ), @@ -142,17 +130,14 @@ class ParkingPage extends StatelessWidget { ), Container( padding: EdgeInsets.all(8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle), width: double.infinity, height: 70, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(TranslationBase.of(context).branch), - Texts(projectViewModel.isArabic - ? model.qrParkingModel.branchDescriptionN - : model.qrParkingModel.branchDescription), + Texts(projectViewModel.isArabic ? model.qrParkingModel.branchDescriptionN : model.qrParkingModel.branchDescription), ], ), ), @@ -170,13 +155,7 @@ class ParkingPage extends StatelessWidget { children: [ Container( width: MediaQuery.of(context).size.width * 0.9, - child: SecondaryButton( - onTap: () async { - model.readQr(); - }, - label: TranslationBase.of(context).readBarcode, - loading: model.state == ViewState.BusyLocal, - textColor: Theme.of(context).backgroundColor), + child: DefaultButton(TranslationBase.of(context).readBarcode, () => {model.readQr()}), ), ], ), @@ -189,16 +168,14 @@ class ParkingPage extends StatelessWidget { children: [ Container( width: MediaQuery.of(context).size.width * 0.9, - child: SecondaryButton( - onTap: () async { - MapsLauncher.launchCoordinates( - model.qrParkingModel.latitude, - model.qrParkingModel.longitude, - ); - }, - disabled: model.qrParkingModel.longitude == 0, - label: TranslationBase.of(context).showMyPark, - textColor: Theme.of(context).backgroundColor), + child: DefaultButton( + TranslationBase.of(context).showMyPark, + () => { + MapsLauncher.launchCoordinates( + model.qrParkingModel.latitude, + model.qrParkingModel.longitude, + ), + }), ), SizedBox( height: 12, diff --git a/lib/pages/AlHabibMedicalService/​ health_calculators.dart b/lib/pages/AlHabibMedicalService/​ health_calculators.dart index fab4eb6d..6df44279 100644 --- a/lib/pages/AlHabibMedicalService/​ health_calculators.dart +++ b/lib/pages/AlHabibMedicalService/​ health_calculators.dart @@ -1,17 +1,17 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart'; -import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart'; import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/ovulation_period/ovulation_period.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart'; -import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:provider/provider.dart'; + import 'health_calculator/bmi_calculator/bmi_calculator.dart'; import 'health_calculator/bmr_calculator/bmr_calculator.dart'; -import 'health_calculator/calorie_calculator/calorie_calculator.dart'; import 'health_calculator/delivery_due/delivery_due.dart'; import 'health_calculator/ideal_body/ideal_body.dart'; @@ -22,6 +22,7 @@ class HealthCalculators extends StatefulWidget { class _HealthCalculatorsState extends State with SingleTickerProviderStateMixin { TabController _tabController; + void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); @@ -34,249 +35,427 @@ class _HealthCalculatorsState extends State with SingleTicker @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); + + List generalHealthList = getGeneralHealthList(context); + List womenHealthList = getWomenHealthList(context); + return AppScaffold( isShowAppBar: true, isShowDecPage: false, + showNewAppBar: true, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).calculators, - body: Scaffold( - extendBodyBehindAppBar: true, - appBar: PreferredSize( - preferredSize: Size.fromHeight(70.0), - child: Stack( - children: [ - Center( - child: Container( - height: 60.0, - margin: EdgeInsets.only(top: 10.0), - width: MediaQuery.of(context).size.width * 1.9, - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Theme.of(context).dividerColor, - width: 5.7, - ), - ), - color: Colors.white, - ), - child: Center( - child: TabBar( - controller: _tabController, - isScrollable: true, - indicatorWeight: 4.0, - indicatorColor: Colors.red, - labelColor: Theme.of(context).buttonColor, - labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), - unselectedLabelColor: Colors.grey, - tabs: [ - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context).generalHealth), - ), - ), - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context).womanHealth), - ), - ), - ], - ), - ), + body: Column( + children: [ + TabBar( + controller: _tabController, + isScrollable: true, + indicatorWeight: 4.0, + indicatorColor: Colors.red, + labelColor: Theme.of(context).buttonColor, + labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), + unselectedLabelColor: Colors.grey, + labelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + tabs: [ + Container( + width: MediaQuery.of(context).size.width * 0.35, + child: Center( + child: Text(TranslationBase.of(context).generalHealth), ), - ) + ), + Container( + width: MediaQuery.of(context).size.width * 0.35, + child: Center( + child: Text(TranslationBase.of(context).womanHealth), + ), + ), ], ), - ), - body: Column( - children: [ - Expanded( - child: TabBarView( - physics: BouncingScrollPhysics(), - controller: _tabController, - children: [ - Container( - child: Column( - children: [ - Container( - width: double.infinity, - height: 80, + Expanded( + child: TabBarView( + physics: NeverScrollableScrollPhysics(), + controller: _tabController, + children: [ + Container( + margin: EdgeInsets.all(20.0), + child: Column( + children: [ + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: generalHealthList.length, + itemBuilder: (BuildContext context, int index) { + return generalHealthList[index]; + }, ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: BMICalculator()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bmi, - imagePath: 'bmi_health_calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: CalorieCalculator(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).calories, - imagePath: 'calories-calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - ], - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BmrCalculator(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bmr, - imagePath: 'BMR_calculator.png', - subTitle: TranslationBase.of(context).calcHealth, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: IdealBody(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).idealBody, - imagePath: 'body_weight.png', - subTitle: TranslationBase.of(context).weight, - ), - ), - ), - ], - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: BodyFat(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).bodyWord, - imagePath: 'body_fat.png', - subTitle: TranslationBase.of(context).fat, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: Carbs(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).carbohydrate, - imagePath: 'carb_protein.png', - subTitle: TranslationBase.of(context).proteinFat, - ), - ), - ), - ], - ), - ], - ), + ), + ], ), - Container( - child: Column( - children: [ - Container( - width: double.infinity, - height: 80, - ), - Row( - children: [ - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage(page: OvulationPeriod()), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).ovulation, - imagePath: 'ovulation_period_icon.png', - subTitle: TranslationBase.of(context).period, - ), - ), - ), - Expanded( - flex: 1, - child: InkWell( - onTap: () { - Navigator.push( - context, - FadePage( - page: DeliveryDue(), - ), - ); - }, - child: MedicalProfileItem( - title: TranslationBase.of(context).delivery, - imagePath: 'delivery_date_icon.png', - subTitle: TranslationBase.of(context).dueDate, - ), - ), - ), - ], + ), + Container( + margin: EdgeInsets.all(20.0), + child: Column( + children: [ + Padding( + padding: EdgeInsets.only(left: 12, right: 12), + child: GridView.builder( + shrinkWrap: true, + primary: false, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + padding: EdgeInsets.zero, + itemCount: womenHealthList.length, + itemBuilder: (BuildContext context, int index) { + return womenHealthList[index]; + }, ), - ], - ), + ), + ], ), - ], - ), - ) - ], - ), + ), + ], + ), + ), + ], ), + + // Scaffold( + // extendBodyBehindAppBar: true, + // appBar: PreferredSize( + // preferredSize: Size.fromHeight(70.0), + // child: Column( + // children: [ + // Center( + // child: Container( + // height: 60.0, + // margin: EdgeInsets.only(top: 10.0), + // width: MediaQuery.of(context).size.width * 1.9, + // decoration: BoxDecoration( + // border: Border( + // bottom: BorderSide( + // color: Theme.of(context).dividerColor, + // width: 5.7, + // ), + // ), + // color: Colors.white, + // ), + // child: Center( + // child: TabBar( + // controller: _tabController, + // isScrollable: true, + // indicatorWeight: 4.0, + // indicatorColor: Colors.red, + // labelColor: Theme.of(context).buttonColor, + // labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), + // unselectedLabelColor: Colors.grey, + // tabs: [ + // Container( + // width: MediaQuery.of(context).size.width * 0.35, + // child: Center( + // child: Texts(TranslationBase.of(context).generalHealth), + // ), + // ), + // Container( + // width: MediaQuery.of(context).size.width * 0.35, + // child: Center( + // child: Texts(TranslationBase.of(context).womanHealth), + // ), + // ), + // ], + // ), + // ), + // ), + // ) + // ], + // ), + // ), + // body: Column( + // children: [ + // Expanded( + // child: TabBarView( + // physics: BouncingScrollPhysics(), + // controller: _tabController, + // children: [ + // Container( + // child: Column( + // children: [ + // Container( + // width: double.infinity, + // height: 80, + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage(page: BMICalculator()), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bmi, + // imagePath: 'bmi_health_calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: CalorieCalculator(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).calories, + // imagePath: 'calories-calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // ], + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: BmrCalculator(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bmr, + // imagePath: 'BMR_calculator.png', + // subTitle: TranslationBase.of(context).calcHealth, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: IdealBody(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).idealBody, + // imagePath: 'body_weight.png', + // subTitle: TranslationBase.of(context).weight, + // ), + // ), + // ), + // ], + // ), + // Row( + // children: [ + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: BodyFat(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).bodyWord, + // imagePath: 'body_fat.png', + // subTitle: TranslationBase.of(context).fat, + // ), + // ), + // ), + // Expanded( + // flex: 1, + // child: InkWell( + // onTap: () { + // Navigator.push( + // context, + // FadePage( + // page: Carbs(), + // ), + // ); + // }, + // child: MedicalProfileItem( + // title: TranslationBase.of(context).carbohydrate, + // imagePath: 'carb_protein.png', + // subTitle: TranslationBase.of(context).proteinFat, + // ), + // ), + // ), + // ], + // ), + // ], + // ), + // ), + // Container( + // child: Column( + // children: [ + // Padding( + // padding: EdgeInsets.only(left: 12, right: 12), + // child: GridView.builder( + // shrinkWrap: true, + // primary: false, + // physics: NeverScrollableScrollPhysics(), + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2 / 2, crossAxisSpacing: 12, mainAxisSpacing: 12), + // padding: EdgeInsets.zero, + // itemCount: womenHealthList.length, + // itemBuilder: (BuildContext context, int index) { + // return womenHealthList[index]; + // }, + // ), + // ), + // ], + // ), + // ), + // ], + // ), + // ) + // ], + // ), ); } + + List getGeneralHealthList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BMICalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bmi, + imagePath: 'assets/images/new-design/bmi_health_calculator.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: CalorieCalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).calories, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BmrCalculator()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bmr, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).calcHealth, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: IdealBody()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).idealBody, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).weight, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: BodyFat()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).bodyWord, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).fat, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: Carbs()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).carbohydrate, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).proteinFat, + isPngImage: true, + ), + )); + + return medical; + } + + List getWomenHealthList(BuildContext context) { + List medical = List(); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: OvulationPeriod()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).ovulation, + imagePath: 'assets/images/new-design/ovulation_period_icon.png', + subTitle: TranslationBase.of(context).period, + isPngImage: true, + ), + )); + + medical.add(InkWell( + onTap: () => Navigator.push( + context, + FadePage(page: DeliveryDue()), + ), + child: MedicalProfileItem( + title: TranslationBase.of(context).delivery, + imagePath: 'assets/images/new-design/delivery_date_icon.png', + subTitle: TranslationBase.of(context).dueDate, + isPngImage: true, + ), + )); + + return medical; + } } diff --git a/lib/pages/Blood/blood_donation.dart b/lib/pages/Blood/blood_donation.dart index f362c2bc..63567eff 100644 --- a/lib/pages/Blood/blood_donation.dart +++ b/lib/pages/Blood/blood_donation.dart @@ -17,7 +17,7 @@ import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectCiteisD import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -83,6 +83,8 @@ class _BloodDonationPageState extends State { onModelReady: (model) => model.getCities(), //model.getHospitals(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, baseViewModel: model, imagesInfo: imagesInfo, description: TranslationBase.of(context).bloodDonationInfo, @@ -108,10 +110,10 @@ class _BloodDonationPageState extends State { padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [Texts(getHospitalName(projectProvider, context)), Icon(Icons.arrow_drop_down)], + children: [Texts(getHospitalName(projectProvider, context), color: Colors.black), Icon(Icons.arrow_drop_down)], ), ), ), @@ -121,17 +123,15 @@ class _BloodDonationPageState extends State { InkWell( //======Gender======== onTap: () => confirmSelectGenderDialog(), - //confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - //Texts(getBeneficiaryType()), - Texts(getGender(context)), + Texts(getGender(context), color: Colors.black), Icon(Icons.arrow_drop_down) ], ), @@ -143,19 +143,14 @@ class _BloodDonationPageState extends State { InkWell( //======Gender======== onTap: () => confirmSelectBloodDialog(), - //confirmSelectBeneficiaryDialog(model), child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Theme.of(context).primaryColor), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - //Texts(getBeneficiaryType()), - Texts(getBlood()), - Icon(Icons.arrow_drop_down) - ], + children: [Texts(getBlood(), color: Colors.black), Icon(Icons.arrow_drop_down)], ), ), ), @@ -163,12 +158,13 @@ class _BloodDonationPageState extends State { height: 12, ), Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( - child: Text(TranslationBase.of(context).viewTermsConditions), - ), - SizedBox( - width: MediaQuery.of(context).size.height * 0.10, + child: Text( + TranslationBase.of(context).viewTermsConditions + ":", + style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), + ), ), InkWell( onTap: () { @@ -178,6 +174,7 @@ class _BloodDonationPageState extends State { child: Texts( TranslationBase.of(context).clickHere, color: Colors.blue, + fontSize: 14.0, ), ), ) @@ -194,22 +191,12 @@ class _BloodDonationPageState extends State { checkedValue = value; }); }, - // tristate: checkedValue==true,//i == 1, value: checkedValue, - activeColor: Color(0xFFc5272d), //Color(0xFF6200EE), - ), - SizedBox( - height: 10, - ), - Row( - children: [], - ), - SizedBox( - width: 10, + activeColor: Color(0xFFc5272d), ), Text( TranslationBase.of(context).iAgreeToTheTermsAndConditions, - style: Theme.of(context).textTheme.subtitle1.copyWith(color: checkedValue ? Color(0xFFc5272d) : Colors.black), + style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold), ), ], ), @@ -239,7 +226,7 @@ class _BloodDonationPageState extends State { onlyCancelButton: true, )); }, - child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png')), + child: Container(width: 250, height: 200, child: Image.asset('assets/images/BloodChrt_EN.png'), color: Colors.white), ), ), ), @@ -253,41 +240,27 @@ class _BloodDonationPageState extends State { ), ), bottomSheet: Container( - height: MediaQuery.of(context).size.height * 0.12, width: double.infinity, padding: EdgeInsets.all(12), - child: SecondaryButton( - textColor: Colors.white, - color: checkedValue == false - ? Color(0xFFa0a4a6) - : Color.fromRGBO( - 63, - 72, - 74, - 1, - ), - label: TranslationBase.of(context).save, - onTap: () async { - if (_selectedHospital == null) { - AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); - return; - } - bloodDetails.city = projectProvider.isArabic ? _selectedHospital.descriptionN : _selectedHospital.description; - bloodDetails.cityCode = _selectedHospital.iD.toString(); - bloodDetails.gender = gender == Gender.Male ? 1 : 2; - await model.updateBloodGroup(bloodDetails); - if (model.state == ViewState.Idle) { - AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); - } else { - AppToast.showErrorToast(message: model.error); - } - }, - ), + child: DefaultButton(TranslationBase.of(context).save, () async { + if (_selectedHospital == null) { + AppToast.showErrorToast(message: TranslationBase.of(context).selectCity); + return; + } + bloodDetails.city = projectProvider.isArabic ? _selectedHospital.descriptionN : _selectedHospital.description; + bloodDetails.cityCode = _selectedHospital.iD.toString(); + bloodDetails.gender = gender == Gender.Male ? 1 : 2; + await model.updateBloodGroup(bloodDetails); + if (model.state == ViewState.Idle) { + AppToast.showSuccessToast(message: model.updatedRegisterBloodMessage); + } else { + AppToast.showErrorToast(message: model.error); + } + }), )), ); } - //============== void confirmSelectBeneficiaryDialog(MyBalanceViewModel model) { showDialog( context: context, diff --git a/lib/pages/Blood/user_agreement_page.dart b/lib/pages/Blood/user_agreement_page.dart index 36989ea5..319d868e 100644 --- a/lib/pages/Blood/user_agreement_page.dart +++ b/lib/pages/Blood/user_agreement_page.dart @@ -12,6 +12,8 @@ class UserAgreementPage extends StatelessWidget { onModelReady: (model) => model.getUserTermsAndConditions(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + showNewAppBarTitle: true, + showNewAppBar: true, appBarTitle: TranslationBase.of(context).userAgreement, body: SingleChildScrollView( child: Html( diff --git a/lib/pages/BookAppointment/QRCode.dart b/lib/pages/BookAppointment/QRCode.dart index 97cda171..3c3c1402 100644 --- a/lib/pages/BookAppointment/QRCode.dart +++ b/lib/pages/BookAppointment/QRCode.dart @@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/nfc/nfc_reader_sheet.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -43,7 +44,6 @@ class _QRCodeState extends State { widget.authUser = new AuthenticatedUser(); NFC.isNDEFSupported.then((supported) { setState(() { - print("nfc supprted"); _supportsNFC = true; }); }); @@ -56,6 +56,8 @@ class _QRCodeState extends State { return AppScaffold( appBarTitle: TranslationBase.of(context).attendRegisterCode, isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, body: SingleChildScrollView( child: Container( child: Column( @@ -146,7 +148,7 @@ class _QRCodeState extends State { child: Text(TranslationBase.of(context).appoInfo, style: TextStyle(fontSize: 18.0, color: Colors.grey[700], fontWeight: FontWeight.bold)), ), Container( - margin: EdgeInsets.only(left: 20.0, bottom: 20.0), + margin: EdgeInsets.only(left: 20.0, bottom: 20.0, right: 20.0), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.grey[200], @@ -161,10 +163,11 @@ class _QRCodeState extends State { margin: EdgeInsets.only(top: 15.0, bottom: 10.0, left: 20.0, right: 20.0), child: Text(widget.patientShareResponse.doctorNameObj, style: TextStyle(fontSize: 18.0, color: Colors.grey[700], fontWeight: FontWeight.bold)), ), - Container( - margin: EdgeInsets.only(bottom: 10.0, left: 20.0, right: 20.0), - child: Text(getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality), style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), - ), + if (getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality) != "null\n") + Container( + margin: EdgeInsets.only(bottom: 10.0, left: 20.0, right: 20.0), + child: Text(getDoctorSpeciality(widget.patientShareResponse.doctorSpeciality), style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), + ), Container( margin: EdgeInsets.only(top: 0.0, bottom: 10.0, left: 20.0, right: 20.0), child: Text(widget.patientShareResponse.projectName, style: TextStyle(fontSize: 18.0, color: Colors.grey[700])), @@ -177,57 +180,12 @@ class _QRCodeState extends State { ), ), Container( - margin: EdgeInsets.zero, + margin: EdgeInsets.only(left: 20.0, right: 20.0, top: 15.0), alignment: Alignment.bottomCenter, child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ - ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.width * 0.7, - height: 45.0, - child: RaisedButton( - color: new Color(0xFF60686b), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: new Color(0xFFbcc2c4), - onPressed: () { -// navigateToQR(context); -// getAppoQR(context); - sendEmail(); - }, - child: Text(TranslationBase.of(context).sendEmail.toUpperCase(), style: TextStyle(fontSize: 18.0)), - ), - ), - ], - ), - ), - Container( - alignment: Alignment.bottomCenter, - height: MediaQuery.of(context).size.height * 0.1, - margin: EdgeInsets.only(bottom: 20.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.width * 0.7, - height: 45.0, - child: RaisedButton( - color: new Color(0xFF60686b), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: new Color(0xFFbcc2c4), - onPressed: () { - navigateToHome(context); - }, - child: Text(TranslationBase.of(context).close.toUpperCase(), style: TextStyle(fontSize: 18.0)), - ), - ), + DefaultButton(TranslationBase.of(context).sendEmail.toUpperCase(), () => {sendEmail()}) ], ), ), diff --git a/lib/pages/BookAppointment/Search.dart b/lib/pages/BookAppointment/Search.dart index 497d5388..e44cb108 100644 --- a/lib/pages/BookAppointment/Search.dart +++ b/lib/pages/BookAppointment/Search.dart @@ -1,10 +1,12 @@ import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByClinic.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/SearchByDoctor.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'components/SearchByClinic.dart'; @@ -31,6 +33,7 @@ class _SearchState extends State with TickerProviderStateMixin { @override Widget build(BuildContext context) { AppGlobal.context = context; + ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( isShowAppBar: false, isShowDecPage: false, @@ -46,11 +49,13 @@ class _SearchState extends State with TickerProviderStateMixin { unselectedLabelColor: Color(0xff575757), labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), labelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.48, ), unselectedLabelStyle: TextStyle( + fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.48, diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart index 4ab3f1ca..f909ce53 100644 --- a/lib/pages/BookAppointment/widgets/DoctorView.dart +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -53,11 +53,10 @@ class DoctorView extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (doctor.doctorTitle != null) - Text( - doctor.doctorTitle + " " + doctor.name, - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), - ), + Text( + doctor.name, + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), + ), if (doctor.doctorTitle != null) SizedBox(height: 6), Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index 749ff667..5519562d 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -26,6 +26,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/countdown_timer_controller.dart'; import 'package:flutter_countdown_timer/current_remaining_time.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; @@ -114,12 +115,13 @@ class _ToDoState extends State { children: [ Image.asset("assets/images/new-design/time_icon.png", width: 20.0, height: 20.0), Container( + width: MediaQuery.of(context).size.width * 0.4, margin: EdgeInsets.only(left: 10.0, right: 10.0), child: Text( DateUtil.getWeekDayMonthDayYearDateFormatted( DateUtil.convertStringToDate(widget.appoList[index].appointmentDate), projectViewModel.isArabic ? "ar" : "en") + " " + - widget.appoList[index].startTime.substring(0, 5), + widget.appoList[index].startTime.substring(0, 5), overflow: TextOverflow.clip, style: TextStyle(fontSize: 10.0)), ), !widget.appoList[index].isLiveCareAppointment ? Image.asset("assets/images/new-design/hospital_address_icon.png", width: 20.0, height: 20.0) : Container(), @@ -161,11 +163,12 @@ class _ToDoState extends State { children: [ Text(widget.appoList[index].doctorTitle + " " + widget.appoList[index].doctorNameObj, style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.bold, letterSpacing: 1.0)), - Container( - margin: EdgeInsets.only(top: 3.0, bottom: 3.0), - child: Text(getDoctorSpeciality(widget.appoList[index].doctorSpeciality).trim(), - style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), - ), + if (getDoctorSpeciality(widget.appoList[index].doctorSpeciality) != "null\n") + Container( + margin: EdgeInsets.only(top: 3.0, bottom: 3.0), + child: Text(getDoctorSpeciality(widget.appoList[index].doctorSpeciality).trim(), + style: TextStyle(fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), + ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisSize: MainAxisSize.max, @@ -189,7 +192,7 @@ class _ToDoState extends State { widgetBuilder: (_, CurrentRemainingTime time) { return time != null ? Text( - '${time.days != null ? time.days : "0"}:${time.hours.toString().length == 1 ? "0" + time.hours.toString() : time.hours}:${time.min}:${time.sec} ' + + '${time.days != null ? time.days : "0"}:${time.hours != null ? time.hours.toString().length == 1 ? "0" + time.hours.toString() : time.hours : "00"}:${time.min}:${time.sec} ' + TranslationBase.of(context).upcomingTimeLeft, style: TextStyle(fontSize: 12.0, color: Color(0xff40ACC9))) : Container(); @@ -229,7 +232,7 @@ class _ToDoState extends State { Expanded( flex: 2, child: Container( - child: Text(getNextActionDescription(widget.appoList[index].nextAction), style: TextStyle(fontSize: 12.0, color: Colors.grey[700])), + child: Text(getNextActionDescription(widget.appoList[index].nextAction), style: TextStyle(fontSize: 11.0, color: Colors.grey[700])), ), ), Expanded( @@ -240,7 +243,7 @@ class _ToDoState extends State { }, child: Container( child: Text(TranslationBase.of(context).upcomingDetails, - textAlign: TextAlign.end, style: TextStyle(fontSize: 12.0, color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), + textAlign: TextAlign.end, style: TextStyle(fontSize: 11.0, color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), ), ) @@ -264,10 +267,23 @@ class _ToDoState extends State { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, children: [ - widget.appoList[index].isLiveCareAppointment ? Image.asset("assets/images/new-design/video.png") : Image.asset("assets/images/new-design/walkin.png"), - widget.appoList[index].isLiveCareAppointment - ? Text(TranslationBase.of(context).videoAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) - : Text(TranslationBase.of(context).walkinAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + widget.appoList[index].clinicID == 265 + ? Container( + margin: EdgeInsets.only(left: 5.0, right: 5.0), + child: SvgPicture.asset( + "assets/images/new/car_icon.svg", + height: 15, + width: 15, + ), + ) + : widget.appoList[index].isLiveCareAppointment + ? Image.asset("assets/images/new-design/video.png") + : Image.asset("assets/images/new-design/walkin.png"), + widget.appoList[index].clinicID == 265 + ? Text(TranslationBase.of(context).drivethruAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + : widget.appoList[index].isLiveCareAppointment + ? Text(TranslationBase.of(context).videoAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) + : Text(TranslationBase.of(context).walkinAppo, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 11.0)) ], ), ), @@ -304,7 +320,7 @@ class _ToDoState extends State { break; case 30: - return "assets/images/new-design/qr_code_button.png"; + return "assets/images/new-design/NFCIcon_option2.png"; break; case 40: @@ -320,7 +336,7 @@ class _ToDoState extends State { break; case 90: - return "assets/images/new-design/check-in.png"; + return "assets/images/new-design/NFCIcon_option2.png"; break; default: @@ -410,7 +426,11 @@ class _ToDoState extends State { break; case 30: - return TranslationBase.of(context).upcomingQR; + return TranslationBase.of(context).upcomingQRNFC; + break; + + case 90: + return TranslationBase.of(context).upcomingQRNFC; break; case 40: @@ -549,7 +569,6 @@ class _ToDoState extends State { DoctorsListService service = new DoctorsListService(); service.generateAppointmentQR(patientShareResponse, context).then((res) { GifLoaderDialogUtils.hideDialog(context); - print(res); navigateToQR(context, res['AppointmentQR'], patientShareResponse); }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index 89856974..00efc157 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -11,7 +11,6 @@ import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel. import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; -import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; @@ -22,9 +21,7 @@ import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart' import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart' as family; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; -import 'package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart'; import 'package:diplomaticquarterapp/uitl/LocalNotification.dart'; -import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart'; @@ -33,6 +30,7 @@ import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.da import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/not_auh_page.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/cupertino.dart'; @@ -41,7 +39,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; + import '../../locator.dart'; import '../../routes.dart'; @@ -252,10 +250,10 @@ class _LandingPageState extends State with WidgetsBindingObserver { _firebaseMessaging.getToken().then((String token) { print("Firebase Token: " + token); sharedPref.setString(PUSH_TOKEN, token); - if (token != null && DEVICE_TOKEN == "") { + if (token != null) { DEVICE_TOKEN = token; checkUserStatus(token); - if (projectViewModel.isLogin) this.getNotificationCount(DEVICE_TOKEN); + // if (projectViewModel.isLogin) this.getNotificationCount(DEVICE_TOKEN); } }); if (results[Permission.location].isGranted) {} @@ -491,16 +489,12 @@ class _LandingPageState extends State with WidgetsBindingObserver { if (await sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); if (data != null) { - // authService - // .registeredAuthenticatedUser(data, token, 0, 0) - // .then((res) => {print(res)}); authService.getDashboard().then((value) => { if (value != null) { setState(() { notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); - sharedPref.setString(NOTIFICATION_COUNT, notificationCount); }) } @@ -665,18 +659,19 @@ class _LandingPageState extends State with WidgetsBindingObserver { void checkUserStatus(token) async { authService.selectDeviceImei(token).then((SelectDeviceIMEIRES value) => setUserValues(value)); - if (projectViewModel.isLoading == true) { + if (authenticatedUserObject.isLogin) { var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); if (data != null) { authService.registeredAuthenticatedUser(data, token, 0, 0).then((res) => {}); authService.getDashboard().then((value) => { setState(() { if (value != null) { - notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + sharedPref.setString(NOTIFICATION_COUNT, notificationCount); } - }) + }), }); } - } + } else {} } } diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index a4f9f0b0..bfb5a85a 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -572,6 +572,7 @@ class _ConfirmLogin extends State { authService.insertDeviceImei(selectedOption).then((value) => {goToHome()}).catchError((err) { print(err); }); + // authService.registeredAuthenticatedUser(data, token, 0, 0).then((res) => {}); } getToDoCount() { diff --git a/lib/pages/medical/my_invoices/invoice_detail_page.dart b/lib/pages/medical/my_invoices/invoice_detail_page.dart index 618c5676..23f3ba6a 100644 --- a/lib/pages/medical/my_invoices/invoice_detail_page.dart +++ b/lib/pages/medical/my_invoices/invoice_detail_page.dart @@ -54,10 +54,10 @@ class InvoiceDetail extends StatelessWidget { child: Table( children: [ TableRow(children: [ - Text("Description", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Quantity", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Price", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), - Text("Total", textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).description, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).quantity, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).price, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + Text(TranslationBase.of(context).total, textAlign: TextAlign.center, style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), ]), ], ), @@ -82,7 +82,7 @@ class InvoiceDetail extends StatelessWidget { ), Container( child: AppExpandableNotifier( - title: "Total Price: " + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].grandTotal.toString() + " SAR", + title: TranslationBase.of(context).patientShareTotal.toString() + " " + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].grandTotal.toString() + " SAR", isExpand: true, bodyWidget: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Table( @@ -90,45 +90,45 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Discount: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).discount, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].discountAmount.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].discountAmount.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("VAT (" + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].vATPercentage.toString() + "%)", + child: Text(TranslationBase.of(context).totalVAT.toString() + " (" + dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].vATPercentage.toString() + "%): ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].patientVATAmount.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].patientVATAmount.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Total: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).total.toString() + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Paid: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).paid.toString() + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 10.0), - child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " SAR", + child: Text(dentalInvoiceDetailResponse.listEInvoiceForDental[0].listConsultation[0].totalPatientShare.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), ]), @@ -152,7 +152,7 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Insurance: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).dentalInsurance + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 5.0), @@ -162,7 +162,7 @@ class InvoiceDetail extends StatelessWidget { TableRow(children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Insurance ID: ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).insuranceID + ": ", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 10.0, bottom: 10.0), @@ -221,11 +221,11 @@ class InvoiceDetail extends StatelessWidget { ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(lab.price.toString() + " SAR", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), + child: Text(lab.price.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text(lab.total.toString() + " SAR", textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), + child: Text(lab.total.toString() + " " + TranslationBase.of(context).sar, textAlign: TextAlign.center, style: TextStyle(color: Colors.black, fontWeight: FontWeight.w400)), ), ]), ); diff --git a/lib/pages/medical/my_invoices/my_invoice_page.dart b/lib/pages/medical/my_invoices/my_invoice_page.dart index c634a587..db4436b7 100644 --- a/lib/pages/medical/my_invoices/my_invoice_page.dart +++ b/lib/pages/medical/my_invoices/my_invoice_page.dart @@ -96,7 +96,7 @@ class _MyInvoicesState extends State { children: [ Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Appointment No: ", + child: Text(TranslationBase.of(context).appointmentNo + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -104,7 +104,7 @@ class _MyInvoicesState extends State { ), Container( margin: EdgeInsets.only(top: 10.0), - child: Text("Appointment Date: ", + child: Text(TranslationBase.of(context).appointmentDate + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -113,7 +113,7 @@ class _MyInvoicesState extends State { Container( margin: EdgeInsets.only( top: 10.0, bottom: 10.0), - child: Text("Clinic: ", + child: Text(TranslationBase.of(context).clinic + ": ", style: TextStyle( fontSize: 14.0, color: Colors.black, @@ -203,14 +203,13 @@ class _MyInvoicesState extends State { DoctorListResponse.DoctorList doctor = new DoctorListResponse.DoctorList(); - doctor.name = listDentalAppointments.doctorName; + doctor.name = projectViewModel.isArabic ? listDentalAppointments.doctorNameN : listDentalAppointments.doctorName; doctor.projectName = listDentalAppointments.projectName; doctor.date = listDentalAppointments.appointmentDate; doctor.actualDoctorRate = 0; doctor.doctorImageURL = listDentalAppointments.doctorImageURL; doctor.projectID = listDentalAppointments.projectID; doctor.dayName = listDentalAppointments.invoiceNo; - doctor.doctorTitle = "Dr."; doctor.clinicName = "InvoiceNo: " + listDentalAppointments.invoiceNo.toString(); myInvoicesService.getDentalAppointmentInvoice(listDentalAppointments.projectID, listDentalAppointments.appointmentNo, context).then((res) { diff --git a/lib/services/pharmacy_services/product_detail_service.dart b/lib/services/pharmacy_services/product_detail_service.dart index f85faf2c..e219adaa 100644 --- a/lib/services/pharmacy_services/product_detail_service.dart +++ b/lib/services/pharmacy_services/product_detail_service.dart @@ -138,7 +138,7 @@ class ProductDetailService extends BaseService { Future getWishlistItems() async { var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID); hasError = false; - await baseAppClient.getPharmacy(GET_WISHLIST+customerId+"?shopping_cart_type=2", + await baseAppClient.getPharmacy(GET_WISHLIST.toString()+customerId.toString()+"?shopping_cart_type=2", onSuccess: (dynamic response, int statusCode) { _wishListProducts.clear(); response['shopping_carts'].forEach((item) { diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 474b13cd..512a8be1 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -2203,6 +2203,18 @@ class TranslationBase { String get offlineClinics => localizedValues["offline-clinics"][locale.languageCode]; String get clinicSchedule => localizedValues["clinic-schedule"][locale.languageCode]; + + String get discount => localizedValues["discount"][locale.languageCode]; + + String get totalVAT => localizedValues["total-VAT"][locale.languageCode]; + + String get paid => localizedValues["paid"][locale.languageCode]; + + String get dentalInsurance => localizedValues["dental-insurance"][locale.languageCode]; + + String get drivethruAppo => localizedValues["drivethru-appo"][locale.languageCode]; + + String get upcomingQRNFC => localizedValues["upcoming-QR-NFC"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 6fa0a4ec..f5e633ec 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -163,7 +163,7 @@ class _AppDrawerState extends State { } else { projectProvider.changeLanguage('ar'); } - var themeNotifier = Provider.of(context, listen: true); + var themeNotifier = Provider.of(context, listen: false); themeNotifier.setTheme(defaultTheme(fontName: projectProvider.isArabic ? 'Cairo' : 'Poppins')); }, ),