From 98b1d07670bfd8c729177ced0ce41838db693815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=B0?= <Вера@DESKTOP-7L4BKCB> Date: Thu, 19 Dec 2024 22:49:26 +0400 Subject: [PATCH] lab 7 --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 10163 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 4884 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 16994 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 35110 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 57787 bytes lib/data/dtos/recipes_dto.dart | 51 ++- lib/data/mappers/recipes_mapper.dart | 38 +-- lib/data/repositories/api_interface.dart | 9 +- lib/data/repositories/mock_repository.dart | 54 +-- lib/data/repositories/recipe_repository.dart | 35 +- lib/domain/models/card.dart | 2 + lib/main.dart | 47 ++- lib/presentation/dialogs/error_dialog.dart | 33 -- lib/presentation/dialogs/show_dialog.dart | 12 - lib/presentation/home_page/card.dart | 46 ++- lib/presentation/home_page/home_page.dart | 189 ++++++++--- pubspec.lock | 312 +++++++++++++++++- pubspec.yaml | 99 ++---- 18 files changed, 632 insertions(+), 295 deletions(-) delete mode 100644 lib/presentation/dialogs/error_dialog.dart delete mode 100644 lib/presentation/dialogs/show_dialog.dart diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..6db3c7f0dc9c5950913acd2b21755eec7dc7266d 100644 GIT binary patch literal 10163 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 AQ2+n{ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..5497884a167d17e0a978b131a037207c1184f64c 100644 GIT binary patch literal 4884 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 FV1k4C*tq}z literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..6b79d25788dbff1c5988245c6ef38986d375b949 100644 GIT binary patch literal 35110 zcmV(yK5*fMx$TZiSv)A5h zed}A_TFELiC(%!RV2u42*4l^t5PlB-ixIZ>e*TX=EXK&aAH3rJ7v29U)2AA2ku{be zWTwwF2wC{nVuXmr#6J`Mg*QHUKZE?2@LFsU!pKfP-n!SoHUIdnw#QGqq@Ux>?DYS! zTV+$OH7;)mm)7>nJ^gI=EiS)w|BLMdR&h&+?=$>IR)@GJ8f*OK6ZSCA@ZdfC6CVeg@S(fW-uG4cwZ+pj@2vuM0gr{u@78IY0Y~p@sam6r2~Q=6K^n!v^Cb?2cGNge_vd<_nZ5^KKQ7gaSeak zqcqshb+-Hi-}i-EXm^>$nCSt)_s+z@4IrzrIoP4)8o4zg2Y&0`!s2`DKm9Or-|A^N zV3@!^^x(&SA3*T37TfZ?`P22lR=Q^)_bg%#9OJfi8z@3IFQ#Rq+VA#Shumm-Y8P}*G{fuEJXuGj+r}kz8hd6~A{tb-_KuY^XFF(ydSVZ^Z4s>v_c4{{WDh8v|kDj^w{s)3{Z4lC6 zd1Nd$_5k!u?~9)KYoDE!f@{odH%)n-tBFqS)j&{ULjwy)k|;;@vaXPg-+~rjGmPIArX=RIo1P z;+oQh`$*?Ef=f_|UvJ`8c4`pokplP-zhx-)j?p6GcC5iZb4A3K*w4K^nc@*+ks;nQ zIk@c%Wy)|uC_HiMK;hgHM3@CrF%04D0QOpU40Y-8EG7QL6HDRxj6aLUJZ$3=?`Ex@ z8jKi1p8nLwM@1GT$)r2Z`lF=Xz#&Juw#qqbhh+%97Zv_dC|EACkD5Pk41CZfKFqTk zxSJAZV?w;knnnxb4F&=E0D$2sfpNdz^AAk$gMio{Gz6B`?px~Ofj!_q;A9bJcXzrd z96mxya-j^SU~Mzqv+&a?=P(5`@Dap0t`axgyE}iv;kGa_W}0nbtT8(M^y391K@?6L ze=!^ktL>(x6#OSCAC?Yrx;3VWE?mAT-w@v1lrWn*=`ZooCWv6iuVWXX=hC`sSzc_${{%A}&6Syf#86m`2Ln$k-iqJzR zkFK0P_13%R;?B(ejk~Z{v{AbwTCcz%q3#N&IXKk^8y*|ulWlXbuJ>EYxvMg~2{;+9x+I#?o^F_%0p&o9B z!9TDOjkf+BF)j%H?5}^ho2MJy-KA5E*wjHf(3 z;Jd(D)SXFB@)~bVL#%s^qY=#g*J02UQQvc?aGC&sz{22rxctE1VRyX*g+Y+!**)}W z4~$w;X1D}J9@9`eMJALn%GnfT63FE(R#u;Qvn)n)`q=B8DI$o#o*c%j1Qd zhq2DBm5$L)?P;b++StixggtD)*pW!yQ%#dw?BNsvH)ZbaZAvNU98NGe4Y&A4!5t~P zaAY~Nvd~4W(aqP-aYS?(0t~h`pQJ%80e8yibft+qoJL9sXUjQljHe}x`)p=C4~;z> z^XO<=M6lB|Y0B(8v^?^F!Te8QUz0N66NXN!#+;hu#$ZGH^20aKlyW}2%-QoT@A!9b4h1m?>G(!D;IPp~o;aTzz|05q6GRR#1N4 z&N%0S11Ca>c5v{3!a*gXDziyg0^?n>oo1i*;K+E#47(mvx3QeR)(^A8!ye3*QSbp{ zQbHML?x28I!zIH8UVsoR0){j;T7#WngTlW6wmr~uJP%wCDKlQ@OROYBOD2K#)fQWL zS9gp62papr4`1P$2-xKgcX~ALVW<0=x)WxV5{yF11Wb`fKG-0x{b6#LI%GYJu9m=o&L0&IvQrc7C? znSK=PO{*Pzp5iNPd}4^LHE5bAduzdB!4`pBA0mZT|8$~?dGBK#h|oT`U_=FTr-LvD zw~f(+bH)I65Q+oNF{4E~kyaD8H;8BWe4RcBiI6yKomJp3J$_Y`#qZL!qlE8mBNMw;QU}Hy7AxwcygxWE7 zL6uR$33lf`sa63=F>0m4jB`e84vYv~R_{noOdux*-gRBEkJ(wAiHtOtVG;p*K3@zvjoF8}T zGh8HLE__<0i)u9qqJVJ%v@T&Zph}uF9Xk-^R>1K+NhL`qsmltc(H)oa0mld1IF6-K zwy<^@!Q5_lIL0`a;Yc9ji%+mb)Przqtu`9}6dLOx21EXMA5fOY2O;8iqXL>r1A&Lj zOotG{7^7Abu#7Rx95`qOnNU1r-d9IAsj>V@!=hYe?3?~e8hdJTX zt;_3}#pNow$c2g`BF-@qM>Anfv1!WU#WR&pJhS}Tl^q{5aq02=H!iM0%^Dn|A;3f# zSHL#TRT9Q1<3?L;6yhwNX>g7?6I#K^pj7ntdd~4#11K06gvH~>{>88S^6&kp|2wA4 zz&bnh1?U*Op4OVWlv)&)-~}dn zW~Mz!cMjNILL3xvj*y}fdO@}Tz*1vt85|2tkYdEl2gPr_@W@}h`u@a1+T@BL#=7m~ zF^==TNIS;^Cl3=%z+e&~&IJtwV2!M>$~HSqA%ZXx7GY_NIF4klWG1n3TrqPiPx1f! zAO8J^Yd3ik<4nShPnXvnYwXA}oJ*~=E>9hS657Jb;c=d4qj5GEc|OigOAs#D-(Lf@ z9}!9XG+GM`2A;Gm4`PfNr&EoQ)l$29pW6}G;YLb=KsXSIC?jAV#4&(r5(YX9jNm*< zSjfRS0xF3B{W62Wvm*kfP0KgeyA0@C@C-iA8D}dOEz2?}oNJ{xMhr0qsWA!-sdDwg zV)e%A-C-~L{IL_?zj=G0QOJk{?+4)v5s$ur#D%kE;mR^#Yl#R22_q~7qXKD@_Xn2J zZhuGzsL^a;M77lYZXe}R%fc9m7!q9k>Tmqo%Gr}|+`1A~5;^IiLNUQ$FL|2HmafSq zp;S9UlRzC64`h1m$w%M+{;PgjfoAi56tV{@triZbxeRs6MwNO0z0%r4xvMFA<`Xct zOMP;oTslJ?E`)>Q*22F97s42;D5jixI|!yZM?qwgh>5@oW~nuV6Gh=^Sm`2{#1Mv^ z({o-6^d!tU%hED$LWVg(jW$*qQy|4K7DUGZ6IgbrJ=$aoHM-tU18z3%-t5SHB|sa7 z4R8SAky@8HLcvoT1K1PMf)K)a6jia?O+g$JAtDj>Hn-$>B&9C2NwcjeiUsGYP!Iwz z!W_bJdtvt1{-?td`?U)60Pb?ob0aNA)LFCxS6KPKQWNqpOBTb7$k2{k)S?K1CBAKOkZKQ0^VUP zW{g>jIOj!Cl=PLgoTxw`aEStQrWrG#;BgQbt+R>b1kq|xq(!cg@{!gUiY+H7pjc2t zup{w&^5&91S-_KJiUq+jGZm69G?Rtc&c~7m#hjqIT?Qic4uM7?BCq_Jo zbzC|i5p6kUA&INB(zHU5C}M%I0Tp4;AY`(=iwMoLTuV6_PbN@GMwU_{P#^#${Kjv6 zB~D^2`*9^%K6doZ2+QE37qcvl?GUM-MIhJmiE~bAS#V7$&}cU*>lhYc11ERYZkY90Y;ID4k5Guev%1 z=E_xop&3Df>wwWXppWoq9xEzp337CN5TY{M8wA2sVp4uMlRvX5XD&@ z1*(bBOf`-fpJjG=fj;^8Y}Bb`qru|?x^sD_CUx~#{f#lZJsxmw1w)z>Oc}K{N4h{r zV9M%M-Dr_|i?Bp0G#zD@h+w#9M8WRpc2A_QKc{EcSW+~@9EeghL znZH_BO>}vgORNAnmo!<6lS_u*7RB%G6)wobd*D+mg ziYQF3Ber{}Bcrw<0WvC}CHtZO}BxeUzHA7H}Z=Lw5~u$QY0^X_}6;uEGL_d72TV zI3~k9526tHyaVE|c5&Dx@sRf$&T)}x_nwv!4+2cg)od-&nW->ZiPTI2%m{cUV@5K- zc`?J}LdcsajhmI3qs^d|FMsN(Vr|_rMtEccBl~+{dm(;w`S#ThM93RZAt8hr%mhWn z@@%CQ*EaU@2$@GK#U$9d9me}X12d*6_<6=)o6U;3Nfa`KN4;J;9B~728_GpW&vs@{ zoIaacn;W$=>>&!DthF>+fJ%UaPmx%QC^kAr+IW%rROAO7oPmGf#1JH$&$L3@?AG>` zZ@p4|=JfoLLf#0Ay0DD1iXfF3 z%{So~rztCx&Sjb)5^3D52m(3%kQc?F$Dc-4^Kp)=fo_CGl8BErdH>`ibG=))U;nVD zbBF~YLvt-QSFI{3-nzD{LLx=nQ2F7ER+zd~sf?RTnPamV<1Sy5L@Ml@c3e6`*ZbD74Pw zXyABUl4_Mx?zr=}eeL?z?#9W}XR6MWXIDi3C^7cI#WqC==C_(qL~B%ZnPRjo;lGTa$pi*a~z3)8A>2mQ>NgQC~87( z47ZHyb|Yv7rrlsm3-O_uB%V#GD|1{p@1f_cq$?>K%7Dj4~~-&tTY|UOK+Zwg3y*lqEhn! z+nfP4tqYYSWgWAA5WNoI$O9*=BweT0^K~rH3m7X4X^bAqf>E;2X@){zWTKF2iHv28 z8^)1fEZ~$;L@CtJrBq7g1ml1kj;S1{5l4q&%qr$nzx|0i>2jOVX4BN8q}HIVz$)0M zwt7fyuG{`**lcl1cr8JmziGv&9$I2WGr~xiVxo(2&_>6fJcOh6%dg(PHta>UMlB$; z5{TV=H0mBX-pJAl3wG07;kE6<{MxA1A+x8)L{I~WRjYkWS*6(;W2!X>=nFLQxiB)2 zky~YM-ME#>V(!FI0ziWmT7usXxB-}?DQDpBjWWtD6A(jks#J8)(Lj;_&c#}rNpN1; za-VLwzyN7Nl5A|=4a2BCTj5-EZ`_Xi<8*n`uAHICY#by*GQb##K;%M1)oMOT zu@GD!Akwtk)f}Nfa}!81dGhQd7cP9DhZ6D}skG9>V9Z^{tf|8n?pT2$#{oqb)h)HI zn8;<8d(`L3!W4NWA3`h?Gzy5;s*uTML_ zi<_&9%kz`LV5M{D-8bG(8f|LT{M^j;x*d)1sgKq1e*EF(Nz#8k*%&I!uX!h97GmS>!FB46v0x1Z(_hUYS5#U&$0J0S?u80`7hk5 zQXCRkUpsJgAHaIZOA*0Q6csYfvpfjgRss2dPS3`X0BkDWNYXzT5Ig=t) zD%~B~Jl;p`ac?Y*L<*}sH_nN;8VmFFYi2B$>eQLjU-*?T{?+&X$5Su-!b^YpSH_wO z4|@GBvp(o`2zzBP6<>2!!T58qLlXR z0dn$kuUx%f@%B+zuatsa1-=Y>(gS6OJ5WFn2!k2P2@c|Mrm2O+F z)M~XLj*&sb{k~G#Sfkv7VJfk5)c1P?&UKnayn?o4(G#?@+tGo0rVIcdA`>ZHwCFZ@=^E zAN_q4R62*x+#Q&|d#|_CSCb+SpYKoP?Q>MA&tR8t;SB7`By)pz&Cr)Z@fs#Lyp zY5&^x{wSpjGs!b&4=pTAE?*yA`tbcqvwdoQ;r6gMsdfrMK<)tz7l=|eo=pDh-~M&A zR&6fM6}mY0y?+>7xhU;-i^FmoyWz)q9rOY+#3WtSfp;eZztP$>$ba8AfX z0p*=kl1dz@BA=vV7tSa`5~3Qll?q>6sAiL5ICOP+=fMdvjG;IIKAF)g>n~2rZJ}ofwl`a9i6yzy0Qa{^L6z+^x>F#p2RmymXyc=NUbU z!!QV34n(OH98m(HfRe%}YGnbjQz_tT;&(5n1_xL}O<&qsYr?%d-OD#`{rlfO%IV~@ zpLp)g_b%qE*Ula}dOZsUydfBst{|QD05#X+}3|w5Px@OerV3g8%mU|U7rjRU0t-7dGj3q1xd``?6gQJ-j zrJRL4AiJ7MwWpGEi?!1e`VuZwRVs1Jfc~)KQQsO>YI1yK2fz%XEJ%`gre)V|^+)5v zH;568s+`P(VO`J+TQ0N_ItXLXZono3XRD~if@3C}UeF~bc#ohQ0(8*S>+0=4ed*lS z&yRMbRn745Y(`Y0{z#?yNUh#ch7lHE!ND@vW_hlp8k@0Z6J;ia85eqjA%bg-C=lXq zyE@4aro2LNhp|Sghi|^oKYe0(XFt7s{>H-cpk|hbwOU@ODoRD}WQrI|D9hn~cXuMq z;-{WU(+u>JliZAR$e*NCArsn3QwYRAOo<$4C13yzgYSEGatLc1_2!`8!;TGtl0sGp zN=NCqwK&(`*|GhxWASYYtb-Rgl=7sa;5n2(P zRQg4KKi$+cD_}X(9EjV&c)Tm2mf@N)owD43!iXRwvrKRAO+;AjZ>@jqROiBnw-*l; z3&$6Rb)kx%{J<)J(=1-g< z#kjY6DQ?wpVoA`JdCH>-a=JZgvB|+_BiCnyh}9_BzBqpMcfYoGp*vfh+pqRis7GZnMaJc5*YbYe^bR z)nLCX2U$)g5KtHoYFI0srfJlyoq6oBN>bT8e+6ly^IR)kO3Iz2mQdr>k-mk>C(d3t z1H}!_Fu_^3uLTR89L*WVK&&@JrkU#rhQf$%B)Q*UUL{r5U|g-;38Wa**FjpO4FQ2h z20VzX4fB8p0kDz1{^S;xi$EG-D=iU@^`OOQ<3lTPn8Z{SD79w)N|12M5>;f5F!6BH zS{owVFvIXie}3+VfAxAZsHMZ4Eu+u8`0V<|?(NIF$B)ckUmGJmx7|fM{hey%o#o^8 zFm6JEYY0lQER>}vz(ItQ2^~pe!XzdniE9RPH174Xd{W31(-EVg(Ua}&==*y{p~G@i ze0Z~)r~MFbpFK18)RV_oZ>(Q^^Zd% zqgMC2Gmjo(jH%4h&_vk8lt)lwP}P8=5OG0qXib0!%b~9aVVwGz(N<+a2%96N9^Zik;i%4Nf1LF#VyUL@P*}&xe?)F<( zhwom#`?<$!Cl+QtxVbSN-hOmp?pm7O*qlYxI!ht~p59u}Mt~Icm%jAHIH}y+y8HGk zucA?ArKABjQ#jyTQVj@sFebv+ra_)H9U%b_fjLDxb2Je_I1bft0wN+1!8-^;sfKQ; zdqXEanujq?L?ke$JP?!<9#AK))4BkFXpP~HO5p-kDlrd$6s9^4k*tNm{>~mHL@FB^ z(+qXOF(f7NgvN%5fYoLSvm>gZHkKL*l5(i0H}`Iuum8@Uo%`El_|XX>AgN`lgV!-KqD7TS|@)&M~r#83jdxR=XW__wR_H_Ko+iJu^ps z?YXl*ICuWW+Q!^mwXOBJ!TNr6mh+g4fC{eSfQLbMI2aj;Df#&G&%gJ*SNEi{N`b=6 zaT%_f%dp@m;IJ(-ne|8L{xY&xdO4TqCMbZ1G_DfqNh#lxXRw#5`xZvT4x~9wYi2kF z7iXv?0ysmbij{)~eK~ z{U8x6pd^q64_T#6`NuN*8d3t&c9GTJ{I75S;Hy8-nA>*adN)7!()D&=zVwOX&pgg+ zmIOh+Q|Wx_*++i(>e^tkcJ}1_sYiz&Z?)ID<_n*H;?`;x)d+`*(qu3^&w}x2Z;sWM zfZalf78n)aP&hO$@NqsaMukx8E87%1iI~@SI3~KdJf{*y*AboX57ctgB+Ur+O*(6 z@=~XCEb=_ha%-^&f-r=4t~TOY18bF2WU2{ig@}rjODrWJQqKfIWczWFMKM94Z~A2Y0M1|<`eXl&!39M$7KK3 zWHchh@R5^^8@GFV=Px~f=J+i&d~cUd;tn!4bn5=q(JiyA?p(Mkpcsj?&YeDycr&syODc66Obo) z;19eC*nu#?Kyzu+N+p_^ts5{!Np|Kt#d%AoKg^?qe-p7qgKo-QBEXcz%2q% zCM9C~*v_fZ+_(SazkTm7-r3&EJ9Bg2yUHE!;koo* zfBC5yoR3rai7))(fBD^)zWBMhN@uusYw)EPYv1_&-@STi_sEIl!lu>u*|C*vOnSo! zLNrM#%1BLeLv*c~3?_MZFm$|+6(VTXo9TGcUGFMAVTcyeRFaAal7I1(7_ENqt+)Co z&sMve`x&ap?eSyF^K0GyhnH{6x9cB|>+kH`?#Ts>npT3ebpQGqjRX@+V=Ixt$~9pj z;`l!}>v=Af)k%`1ld*PfjlO@ZoRQ%4)J}SXAkw(DGRWtgKnMFIYTC<*vAwT=iM+0l zI90I)g@Ywf1*aGU=mZj`N+n!aY%?O6p{>~_M`%18GemN!0_R*qm33zFr(Zb6W09*2 ziY_2CGzA=W8lj`-UqN5{>hImYyecOxW7S%>(3M5XD7Ik~C7qdNij%FK8(m$ze7UGs zXjVV`pZ?}@i)C}I;KL8rpMC7)dmmmrb+|g$GI>68d;M-s>qkzVe0%+NXYTk+W4^n- zu5}?|5%GMco#aMeTHTGJGu5Ocg4$>_?)SP$7}S$WHq0TRwgE(S!e%@3dC~uyzklgh zpX*fW((PL%fmkO_aPR8Q;KL1w3~3xW)lY#rP{qDq zK|wO?hXhR}0{DRK2Uuc>@h}wpENG$N*lHo@{6gDd5mb#5Wb*NN>_9m!lv30Nlr%f| z6Q4NRnvGJO8>@*ng>r&FUdskczyE)}_TK9oYd3cueeBezyB$=jYh9_G+={a(s?>Hz zN)|&NH3Gb_Htuhv0pj)9qaPm*#^?9$Ch7h{OCEi?64UTI|6}9jSFU{a*FW_)U;P@d zRN9NR)6Z15Hr{E^qqC13ZZ_-N+xu_*=toyq)zazbD-llZc9F7dB$*XOYInvxqlh3e zVK6HvFH%r^!$^-4fAZ4nOEvV!*;8qOX6lu#ZdXy-9cHx%D*j14bM?aYXU`lxt|zao zUMpr6X;_LxtyA>7K2KL?@q;KF4M;5kEM4pcNi0O*+6g>2Xg$h+lb@?>oJm>u#^s`r z({2oWFtf?pk91%%fbt+l)qcVf2x|~Xy)>n0w%rLG-eC+ClfG0F3IrWd%48aPPXx-J zd3L3<$Wl{`#uE_;Mr~0TP8VPO?$-DI_Al2~i#sDJl2{D}bM<&^RGJ$dFlGfZY<+JS zhoYKv2vqOzB&Q;ntyddK7&V(sG>_?^mvpkt?QE`PKKAw2=Sd zi}lMNemLoGtzX-|^442gTzC*B%qb5Pm?WMgRTbJ4OJTqLDkY}%zediDzfmSNgSb1v{mEGa&AFh=cpIt4jKpsl`1kWXg(>d zlseZ)!)ZZop3ig!0MrG_inAw#T?zps0IZw&LJ6|kN@zSmo%v1>3Z%8n3zMbT6wqtq z!~^NLz=6?$MMSn|6OG4dt`%YeQhYw_*8lK7zO;4M+`T33V1sx<{INeNmq^8g|{~67NciBcKX$Cz5m63`^)oB zJ#)9)|HD7{yQ?o>2!^IgNEF7LQc1(r?A%^&bnNkGjxC!^VmjfqNfM%w*7yQuMEmGc?>J^w!fWa|<>7ett|`Cj*z zP9BcedhhRQTy44z6) zaeQUo>esh7N6C!AKzzCJsnZbxu8GXGEcodOrOpX*C@4rX=zPi*A~b0?WSSPk2~?~d z8xEpUWsq;>w_Zeize{vDl|ZkPV%8Q)F@W+y2w}9D^aj-GKxiy6;o4;k#E&8}mS(xh zg((=uRu<`4+I(xg`2YMLFRL}Z(3pMu=1$54&GXT4(3y$f+mRPmx4!)J@<@`sp)5p- zaR>?y*W40EkOU~Lo!9|7zi-?XSJQ;^Rv0kc-}>BV?1|?V-~7{y@BF{tkQs@L3Xr@C3K^EtRzMbFoe0wu83O1<>S270g~Pk+{n>?1HrYON;@BIPZZ?CRXO16! z`{LEwLjB*IKJvZQyH{x&Xg@y+&iB}2XvK$a1qyJ$H-Wl=7_Kg(G%B>EM6~LyL$f;{ zT!l0Q7Dx{yP1P&(QxNnVn0z?q)@V~&86b1MOP7S9>g_Z~0O66)-)+w}I z|Aj_rZY39aiuWhsx4tv_+TVTSNTbdJ^2U|B29uRItVNB?W|1{ZfvL}Q-oDwr+@lkm zSfe>*JcykJDKd}(XzQEpk*kri4z4s5k`tzRB`I+9yZ`x}+uJP0{P~YHzVd}ebVQRw zRot8n<3J)}$D5{|Eq-ctZdGH}dGANJkvP`fyH>5%bPgI^ODOifMoBKhfCW`i%~T3> z9Eg{-qh%2{3_+V4G~ZED|KNf>wZJyk$IV8JWd6vpEQhl@AC?@68oV$z@B42LN?fix%DnI^avi35MtieKXc7 zRZxrs6HuVGDk~=WxL-rX+{%%cez;a`&Rcx<#mCx}Ii=4W#*1@SbDMAEo3|rMcvRoK zP6va$-nKV~28&);i7sAxjnP&$e7aVjjiaO}Ot;s!SOozJt>7%qq@tKibrc|*Vot(r ztTMVmn$O+H@3LTPwcAf8tkYT??QiCTy-z-J=yQ+OuHNdMzq)a_&VOww`u^?ScG8rL zxb{jYA%Z*4rQSSHuaJ2^olc1E50;wZf%S(sm*A@iR;gn%1D(8Dk!H4q|jKp8ioPSEM2UW zS{1f1soh`e?xJ8mj2jm3-MqWqTCVUNYk8qn7mrlFD*AhJ_10uKnxwZM*Cl|hUXMcmWCoz*0b3;%ZCe22pGeave zI1WIFS`9$z-do??+uK`OTFxe8oD~Gzm2ZaeQdZvxMy9iX4yJ0`a)g%`B)XwBuD2d` zIt-5TqZX7?f>98;YFQ{jv4OaWvhHA56dU`)VV>1$l{6c@GaxO7&Kx@Q-qzNh6nm3Y zBJ;xh%7wL!9tun?LZs?CYOo(b$v`k{3YCGp7W>mCkjkC2hK#U)j1HDE6!k`9L@S}n z7yjhUtJiY&$*dR^R~psDL08JWV=>nuuC>C8uWb!Cx-UF&^8EJhU7fW;Wb-X)tDwav z)ubXY#hfsirC4A_L=e^x(S`9NAc-=nkicU>Ras9AA)M4DtH;9;+V4|?it!{JkJ91Dj&q#r zI1$L2{kt2*Br{Gc=6aS~Z?+$pdEXR|pE!}!_1y!5g|I@l>=!G?7rTT`g38WFqbGym zaBHU#SH_xj8Wkb64x%HicsAs{;fO%E{))9pyLt!mJAX^gqUfl#uO%c|n7-i7L zV#)oJFiW{<=6r@`>q_43(H5a_MPx9CG_GoYtZiIHp!(3!c-P3Gu8F|y?V9M z4yzkmTcnX_gW5^`*03K-BpBZryGzp=STNGfTsrfRkanhCcVgb5|~Je(7`1 z{^j4jHW-ih`q6By#^{Y*lw5rG{cNx?*IZ1(7_@G1O{)2Si3B%LL za0f%D(7oYfej;1>O8`>vb-y<-dC_EHret?8p0#+f-MYKo+v$#$n$6xg?TxdUcBilN zr>Zl1!x4?l@kCUJvARo?>JNu!n~NF77x%`R315IVx=eFD1b?G%# zL=0?*bv_HywmyqQb!Oq)@7yJ<_R8h%r=M!v-hQ_~KhFMuKmm^a-GEnOSp}CYi5CVr*5#wekF&M!}L(!p_ z6~$1iAwil)Nt%ypF-d#f3S&l&w`Hx>jyHOP-let2j~}^uebq+MFV45$?8!Al#%{WW z8_4OWgM!b>fsxV+M-K;xOvdB9J0O`Po*@3QNqy{oYnAijz4vo-C7{pKmXlV>nPcv+ zk+{FbU`NAILj;pTjwX{zwZ5Mhx}Pp}T6enpSGrxn0-{le8c^+0OEZ0{H9yD(w|con zXt6GyTw2`iPg?DoT<>aI_d~_}=Tj<-BQ|p>x3+J&rn!P(7DrX3B#@Id4=Gug5!O`R zJhy6bQg2z7G&Y9((p?-TVYWWH{iiRTJh^;&h33k<^vZ>&&n#b99rtr+R(G%_agDmz z6^;Z;#Oh|PB6cymdTs6L)oj3vrM`LV zQe!0<qZOvZbv_a&dE;|m=QO0nSpvADXoztOIC z&R@Q8c;(1v8m+hX#(T6vwUyHWyH?3!VnEncNRQbypevZ-09^@Y+R^R^k9$L!;V00u z;U|ol=^tzG!?30^>2W#i&p1eDEgFr-jL-n+36S73E+(?LzOlQqG#3p=JH7Fpeajea z#{5=y|88C&X(E}QI5Hb>b#-U!c8_eN1_tT6(OTuqNbCp2!oV6gIvE@=B@t&KY%i^> z9xtCb_VT%_dp%ugGY-KfBPgBd=<9D>$s{9q-OapVt=i1x0sHu|&R58-aX$Oa@4olg zb7zgdv$M;TIjliJDYcZD$_>qp9#{;W3$7(kYny4+!zLrR7DqL>aqWvxlrq7L7>{w9 z;iWUPIv*{rEPVSPK0u_&+05f7$?-IV zZR93)@o2_Ik^7T4hL(SE!B;1&pR?(Q5HiX{7$MH{6vl5ci_e{3HN2Y4wlp@`WJ2^L z!u;Y|CTT)=nCAmq45>9+yWv&J-n)F`OHX!=9XtHy_J`m4hikw5Y4z;M&f+f8*bM`H5eA{;24r zPfUvc{=G}pfYd8Te|Ta0<<;Tyr&~#2uMCEaM`^G3=*rUVyW1ZOEZo0XXT!Gzm$xb~S);lC)@6FGRnOmHRZVlz;L?r=UnXTQ~+evD5m=%y0Nj(|4$ygNoDMs}E z3ow4}BeZFAWT}*y*3v>+Nu{AdSZ}r$r5vY|FY0?_V)ARmCI@3(7T1)*jL~Js3kelHp{9(z$sR6KuM5PR`2W`nyH?g zY2MiHrg^F=QKwcNrwYfy2sX|pmQ|(`eViZkDsl+M%9ekd#m&F4t_g>fjU7Cy1fdwG zy)4T(NFzf6?Q9%ef}>j**Q)6Db@bNtv>xV5v(eh7ZZ{wM_POmRPuI^b;E{|!xcuHz zXU|@{tyA2wFu7`EZ~@hEXud346+9a^Av z$J&Z?T`DsT{fS4byL;QIn%E-lM zJ=ikl;4dEe;hO%3j?HmdA$%$uK|{EPRtPEz3A6-3(#__ju1YQ#5mH;lt9y!%wh;?k z1I?}IymDdp(Z%r>pLy)Buc24oI{)Icr$5+Dhl8r68et(pkZl=kZE4CW-qtl1K@rP< zq~gwRe5Q!@E?#@{LRRn>P95sZ(yjFjA||hn(~Rn2Ewaz9v<4H}ORH(Nx74n@c6}WM z_2Y-Ha)y`t<`nDs+nqiC2HS8wmkADYL#!64PEo14`z z6d|8)Hj9mJYNT~@C;ePykPSJ41Ck17Jl_K1hkRpK5m!pNdE0`(aB_iMm$!AG4{i`D z$u!^%N+(YJpD+=|Q8g4XBt5Y>e`kGv_rk{>UwP-lTmAlErW#MO^*Deo!o4xktYWBe z<4_bT|1=Mc!-iIzV!2rD&qcdQec|wDV{EL_D{bkrYEyhaVIS1rY1THb94; zo4;QUg+(xM(v~E?y>HOsK?*(n9$KB0M8Nh6KN1zXpJB4my+QY`X%p6LlxJZOl*65| z)jY^FUtQfeet414p+bqub$>8Qhm)1VOR2)cNtzaJkSYlgi%>a{(kYBwkG2~Mcrf{t zc z`ppm4UVJM2Uw(b&cYg1^T{}bm|K8r~*Rt%q6I*G=lh3*N-pbWEvDs`=B-IQpCea*H z8cFoXfCsP*8xY_J1Ag)!;AcPiVf{$&CXq2x$eDn)5&4y zm5gt#z0bW>Yz9&GY(QeMSas{1z4uz{`+naqaD+&Yxd9f`aG->O%Ab0nyO`d;ck-F1%evgqjLErq^ z=dINixh@m*fOZH@49JnC!>#@J zAbm9l0_TGBx$Q5fQHG>sxGgasqxj#ve)~W9+@mdYgy+Hc{_XY4Ygaxxj%lqal=k^f zv&qtYQ3x}5h$a{;1@vG}KDfEKc=hT$>Bl3KEkwKBtk=SyynR1W?(K zH{S-!jCRmi?S-%W@P0ab@5&}~x7ThQ7LCt6yNEM1i!>5gm7W0=tOU-3r_pP;l7=m} z#LC@YRlm?x$^gb^WAMxwV%Q=Y1MeOQtWn_VI5h?Z<@UP-Q zkB1u@t(CSvo)*62X+n1oM;CWCCeulpazAVd&9!+#va*cSOA~jfT&=;UsUSfyz^NIv zQ%t#%+*q3cw}R-B?o6yCt}0;60MT`Pi6vKPAUl8Y+O=e12B-8XJ{1mFAOqmSN+ z(p!uAQ1lV$wpuG8w6j^3FN91%Ptv&bKm9L%^_?$VZMDTCSGG^C?`CP?fz67GRpaK~ z?8~3M&~)~(O81kaBz3pC+pqulz2ARvYrRX}9nRlU9)0eKC`pqdv#}y3mCRB|Es6x5 z!Qi6-uOxz=P@V>$ST{FQ{1IhM+)ch(>5ce6B&WG?rXP@q8;zBNsOJkB5otpr@u`KN zS(-wlLWo?d&;tpKL$L2Vx%BTIM4Kx?yW`HL1$I22grmu<)2v0=6l{>Rw2=hZnpaox zqSkM;j1I6>Y?X&)OnytovqGggI;~{xw9HGayE}W&-FT65&7i5`q42?`oHrv{Y*dt zFE~CKbh_F>YBsCCfA8eV`Ry#uKk?KPcW&*MUA_91ks$1`0)&N7 zhX5kSXjI69Mn$e1q)98QH5uF~ao)^ z^yHs@sr9`-`AKbc^N)V_neYAW;MzWq>Pkq0xv2?s{(7tl*-eBwT`n)KP z=kpsk^3T6?o)qGv+x=_r-F^8}Pqka})oVx3ed9BiUfe(dLB7*;hzkdog$7kQ(mGq- zsWQDyOI<-28dZdRfTonKzNCPmvQ5u}qnnupL``0YFz}tW1skqTNg_=mM5iW4Q=51s zr8Lzy(WyRS3^=K&@(Em!YLVqk1dZ>eLVB%miuT zpuMp>JaPg*q(R_s4UgZ?Ch?#@P7CqHFF!Hr_oHy@xBvUkIV&ycaL@Cwz`yzQ)}O!j zZX_C1>188TW<%*RDMp%;2b<}m4Qw<;J*_ALrH%y{P{h(k?4vYrnQ&son-juyJ$`xq(MV=F_0>5TMd>C_zLfyN!f92xFXp(0_ zGuH)^e(VvVh2ZrjkUVoUs5PmSXnAUx`U7@fWfa&7)A9tZlDff-$9i;vTaRNnc_mY} z{DRuUR3}n@v>S6&6pB37RnI+%ufKaTpI+SEAARD|rNzSg<3D-lu?vlV@;lG9>kOgr z`#; zMcQ+t?KORHC)cGHhYcgNJnYj}YH25hjl;WXgUjrz5}GpoCOGhv`QccVCVUiP&>T~k z!wlGXc$i$SY6TNQ>mkTI<3w{XYj-WqL~&^bXMNSButjH{3!<~Y^J}4>XNl{O2nV-! z`&TY(E~0D!TO4It`i#a}rEv}gj>lrD9cq#usyr&oTdsn_3@N1=)LCHCa-_APe*sU^ zWSZIT+y*5XGZY_DB|MiPR8#56{P?RcuJM!XU;OE<&0h0cFN8Oa+`oBC-`LA{|L4E` zAOD9hL{n6Alg~XqAND7aAkNX=3p;qF?W46-ie@`&LA%@CANDt{u08Xai)f?4+I8aC zpe17BlEv26N+UQh>)hl|SgTl*mt$f*tJcV-oTy6nfK}xhj86xcQ0Yl+b4LyHgP3$c zlj!3?j)%xIaJCVK_ASa54OXDz;6|NODw0Iz1yT0SoQCcgV8W)r!h4hzIY!DM%3&t|Jk9a+ck}m_sbopK>8~0LSoYH{Rq-rC} z*H0;7hC+aJnbmJt&_*UnNDY+8Op}5Z3(d1)C?gzPc;WFmRVP=rR(|~cNq1%A^7-|x zwatI=7jOLat0xV-x6yG{y1uKEoeRO@xZqq;mh_tK-TwX)Uw^jtM4NV2iSH^9V3#*t zLJzJ*!e@KOLTtFo-0?E76PE=#s;11mY$-%;0Hr(LV1Sr!mD z#BU!jHrIO{PtM}l^Bdzd!&tkn+n_X4F(&{)nQDS9CkD$c<&0N2fTq^a%t%CZS=wS* z-HR#)!zMnOcbW58q~i-~{?4ZFIBI@)L8)uvCEaT(1Z{P3qHm`1Z z0m*zKFNMK+t$BTa_xTskQ^pT<_Vj=Lnfj#$3L6Ofh~(hTOdYIMktIcz`8q`X>DSh3 zdk4c4+Ox|DS0i?t*GsHhH;|u9{+?Reqhl+aW@mDANh!9lXg)E3t}2fu0xE2{gybsY z!Ab|WYm@hHV<@=Hqa~EM9%&Gm*ygD*Z!Do>GpI3n2&|mYD2;)mnx%nD+nr_-Cou97 zq<=El++69j>(j}s9fq?g%T-7zcc^w4s0)>L&8|%=_Etq=KebiWWhkH-2bRG$=G-mW zds^W9KuUIRAqm-#(bdz18(%I(z!+c|_#?{wPfyug<4a zwbOC7>!@32?|t~eZ+_!hMtI(JKl%0N#k%IK!E~K~G3}V(CZ>TBQ;~~WElloB(eeC( z)}Qdy-+?)!XW=M9?M7(hnjmq+aT&zlVKc&2hAUwDT7z^fS6G!kS}J5H0gwpbInL9x z-mC!%4n9LvA~H{t?I$kfN27Q=K?X^&Q$5IWXoQ*}@N-nkgOz5Xt5dgAcoj_PDx@CF zq5`%w2A+RlX@rlCX5C(++wDe+#d^EmpQZw_>0%W4b%mJYTRyBE%b5@%jjBZ2$hi_q}Tg*|L9v+ z_x5ItbpnAN>7YxiL6!_}-8*{eYfmCp)Sq2B|H*T>84&85jc%@yVq_IFm#eu}Nf5Y` z4-OZ%Chxzs|JsMM!;wq9CU(m(LghHHlB8)`m>YUb2&pwVDMOE32zz^pA?+}=j3i&? zFB)fW$8k9`5-L^5JdY>5)oCjRIfM}SGvfDu__me>t~MRZ2-RT6LlF)M0d9#?fhx-6 zio+0ukuqNoc&#W$c)Upc&?AHtxj~aXe=?aluCueca&mOCy|Fq;BA#lm5$3sxnSwJC zaBO7IMp$sx0!~`V@5cw1C|%|?mMs8~n6U{lg%b>xr64(Tc86-c(|hIG$>Zm}7a!U9 z%8OTqlla>0<20MkhhjZ!eENLjTpJJWkBuG^hB$OMc*5pI~G&=-SRxdu_uJc~?yL{;fV zYu+`2sj12>3Z>L!Jo6g0&~dyVlpRfnQ=2GtHe3$Qf6Eg_ z0ki^nVMrvVdpAMB%f{Ta)WpuZvN-pHz%;~gLp{$)isEoI-rU?cJUCokUnO;w6+o3H zu4}qQZ9hM}T}n~l--9L`m7|BsV%n;Gw0T-aKnJz1@zpoOn$mz(qa2d`j8G_w7ndJh z&px_;G!iX(*d+0%A7AU8Y+Oi7s`r{kU#q&=&s2Po-lTq{+ZyXFK*SG8bw?F-KTuW}; zzBya)n%6$r>woe~FSdH;u%oflFz0jXxho2)&;^nT9F4QQIG)VzkAM7E2Y>%T@m3b@ zhs{E}AjLFxDHH^iS~KQ_f#0l4De`G#LR`(*Pbpjc8YP5{Iy@tWSk9V}$=8BFv?!&` znn|X103HVxwbHqsACH_g@0{B}1kd;G!z9=;532si8mKeh1wbLiGRqKBjtwEyRnQ8> z_9Uy;rq1FdXf_>6I1*`+5yGM*AB`u^U)uO!_lUXm)pmF^9o6gYMC3$chj@kXtgo~! z4Q;wv31=9$WC3Drh*qT8;MpfO@7zBGRY*Kq**gEs&i3{FafVw3cx&?WYfUP%KmN1b zue@;O){VoHVOkX0^#biW1;@{Btj|uwtq(^+5|3L#!t_{oT!f$l?O}0LX#G5WUiZWQ9!W(iE>ko1y2dhs}51zUFv!hvttz zTH9W2EM{Vi`1k+f??3OS+uyy4>I-n_=Mkn2>~?XU%s)7O=LdJ*czba@Vb@UexDnE4MJ>ZAT^HS(a}j`rQPjyCxZb1A>~S4E>*37$jcZ8I;n^g`e2sy>7W{PY7A2x z7lo31r32b2pyy#|z51Cd?w@R~cTa|k!;@jV*CkZdY7V%{&A=3_WO13p$|M`X`VuNz zByp>bJrOao%I&ZVs#k0wP?^ww9;#d$;3hy9~9u|cvzGS4_#2Z~4Y z8+#xA-R}FhXE$;4h8s*sS4&J}1~9b?ga(f~+IQ;RjuVFIB5^dyX98kL zi^|%v)*jFg(%h_3sR1ga0J^)@RPrJ-yD9=-@?{GQKPQP6G;~?E_Y>j8R{Ry;M(j|gs{NOC@z9Q1$krytxuWVh(%wa&^=VmXIu%nKTY;J{*YTZ0Sb|9u|U<#)T zFfk{L)_Wc1x%26i33Xa_R_KOil-6sAQjw-msoCtQax{hPWLTIg4x$mH8b#@5yU_`~ zERPdS3LRuRzjHjeys<_w8YlelWIhk+W?MHH2IS0fgr;ec=a8?*Z01>~<_0d>J01{? z;^d?mcu(!LQ$_CGkMklG+81g_1T*S?YSJm0oTuw`y2enzsN&umcV|yO(t6>1BaLFC z?sl_8#VLxi>C?}y2AhuaiBGsYS9SD$A&nDxoJ_BeU-{m9_l|>iWb5SIlM6v>AVbOo_tDq+9~ zQE8$|3rJZ`kPWUT3gMeEsKA&bGFW5|(XA%)3pz`ogAkJKo=mT7wtXiX2X375-Geb? zfw_!eRHL}vXkD4?(sUlM*6MzZ~E0bcy zb&|H3u2IB=xW6bc*6-ZdyYk3$7gxf#KRKGp-J?mf$yQdJ1Z6p^yCF)B-qhJ~*y1>) zci-82?f*I6KMD7Co>b4h$PWjtIGu-e<`$h!hjT#-H(2d9S9`PD_wRiF4U}?}6ppZA z;|44W98wQ>&ash45C`IWVAOGnCE{u?w4I6RkWAeHI1t2WJ03Mk3IMna4HhPXr3JX* zok;^7V=a_+Jh!vjn+!%;lwwYybjfXm1uL-QFcgS5Ba)kdZWEXbgGVia0t^5jHCjTh z(b0GzP^%WY^?;{}a1P4;>-YPQ?5xtP2$0Uac8+zH!Te>aQL1$4kjWx-GwC|iQm%v{ z1Zb=_n|>T8m^q{2q_)v(_*mz1%5xn$N8IairudqT&Df|l?*FPG*_JjQy-Qu5q>C)#u_x8cA z^rn!3>X6m?hVKPQn)(iFb~=0Se>A7XkM`b4yW#rc^3wt$V;3oVbn?)@$)1(o&V&l1f2n zKN&`@6C$1>#06F5xd{X{tzBETXeccqy@jBI>2%dF^&HB4&x7`vu)9a2t6Qs%lJi0` zgd`*p)HpAqEc1d^yGhe1;t*FsnvHsz<%TdJwtE0t#u@T`KUypbj@Q~j4@4|9PSj|@ z*E(oEPbiJ*VStoqcF;>-z8pp3)$h}P`ES1esn2eH<)2+`HO2kif$N0ZmmVD+4vPJm z7)M^aesXjE>id&E-j<*Fy!*v3_6Ipnx#N3?Qoqic-4&p{)_m9V76*g)Xh>Zbf#(B6 zFCq#-Y82uswQVM$4KuF)hW1(DGw4Ruhgkx)LMBB@5$IjPTilSYlqsl`(V>~U?>fvn zH5$$tsDN`#Do$JhcI;lDR2s!*_G^Vpx|C`Vvo?Ltbl0gAij-ZhMIT6M&<&0pE-?Tu!J2qy!EL#EGd ztmcbZl$$IykfnwT&eCJP-E)h)C{%IrTxT)L{FVdFuShRHTK}!zzPkBnFd0R)4kGmY zZM5{`$dfE4WCey#kEE) zY&Nq(G=c_C;~PisIG#rWKLcC#6u0WW=WC3LqJXR;7ea6$=cX3GxgyM@vYbo98~=c@ zic$))q$pD+AO{=AeIQQIiZuNC~Aiot=V%uZbWi$}{i)avcoB5M+EQ{Cg+U%PWo5UUzRe z_Wh7^?mE8b)+y6zp1YLPYN4lbr{lK+J)0gj!qp4DL#SjdYS!`n<2+ThG@hN`Y7fT( zrO|rN6#@$ted$|QKl{Z_qq9Ql-Oft#r6-?3$;q8J-nsi;yxv(m*c~6=pCaVOkxF@t z331)l-a_&xKRti^@fpt&Sp;FtWo{vO;56&)R;}A^VagD@{`S7#Xp*2N@);SEy4BzA`CDG>R#0cm1V#frGz#y93u}RTnccmLY7TjC6Z|C!ir6Z zJ2M!2nq^w)m1dxE&N-w!VJE!Xk5*e^eWiZVUj#udOOtxtEqLw_+6_Yuq*Uz)MRCw* zbO*!n_G)i1k2G_mg0FTUzLd-Qd^+j28cL!(lj~df8^8O^g{Pa%l_v5wk?RMNsAO>K zopxw7M=FOHONh#5LKS(IG2;uY4RH<UahxaBy;GNrOyKX@e9dQczYspDHWQ}InYWV^@&yr95=H-{Z zzPY|#Q{9I4dfM$F6suW(@ZnG0v7Q|+MniWvE|eRNQo0xAI!U&Bt)z7kf9<#V`s&OL zRuG`CuH%6vw(E6zy+*yhy}9lCUW5`-^ShfHe!G=rSsX2fclUKZfv*SgQ?8K?V6aS9 zW)?}|WRfyRs=AXl15;Nc413W|{*Li)yJGAXIwmetFkrv_4%%7Gw;)K#dIyxD*>@t2UJ1IoHL( zxYunH!)65+9fyu*xzuQDrFqz&@LGdp#b(PN&bg30s5#Sgy1Lpv9xiHgy6(x2<90&X zV7Tdb2rHON3qjj$`ni`cKl1!)W3z^Q&+#`1tHa2UN7KRnc+lCqcCgwA?%e~6cjWoI zyKzu=R@Qrmtw!)qf4}H$vO-F(0dg7@|FTQ+k{V~6}(nyJ*ULB(>FEZa- z$?{pd7X0OV?|t~w;yYhlNz=VBT>sJSBdkg2hBw+9o8SE}c(08y7EDqpJw!a$Z?(Ho z9Qgs%gunxXoesCWaMf=d$5Y^NQ3w3?78xiM>Q2LV!3mvERB)UYS(>D?MLe7lcuA#U ziiga;lz%E2=}ki|y32^RcVKU?AIS zkkHZ1t*sks^^k_SogwblR@z z@BZ@_nrqlUw_4j=)0EV(n=O(|XRVbrL_CA_xR}XaJ51!{+Uim}%$9PkPV) zW*+uDfjtJJ41tI+w`tJtSD8i{pn0jfh;FzwW0tLbuO7$gcrXOGF!bOUA)pwB23pB{ zJeFz3=aH|8bX}h2rJeJc1hLbJv*8>SDvm8Vl$yoW=mi1{l0Wpj!t3@}}3DXR-AP^ZiL?fd~1Ok*SL7(Y3#>*yS32$Nb+AH{Rui!ZIz`je z_0AvuS1&f#1zD|yTOI8%!9_Be@+|IdpEnI=Y|i>I+%dNk$w_aW?lH_}AKXqzRk1Z7#58VEsTY1x))*W&}flg6L9N z*_?t08iJT$gNhhTk{A|1>Eo>p$^aQQfskVNZM&llLf|jwcYg7VmOJ82fWwtV#&_6>s!70A|5{X z!p3*L`-xhwaNBjS+mtA#Y09IF7g=+)CuF2Gby)+esZ9Dw+<5byk94LacK2$Vy?^%Q zMQ2;Fz=iNj$7FH91YN*VF`;Oti=vKWY7Z8=e&G1A;2(_+XHs0db#t6VuIJ5p;Wio| zo|C4Yj*I!N!{lfJ>5+s=#1$8&WdZ~22NL?0U9%av=se2<)?xJ!?l~l?TEmqpg~x;! zBSt;X^ZWpZE|iy2@~n_~1~q-br4U(~3dPHC+_EaQ*3S~_aw2{9R6BLuw3#G~IklPq zgwQ0jmM(LsN+N{+vb5xJ{H|teRsHE)LE~4Ax?(UkK*`Bx8pfz zGUBcjp`bANcG&v-qEZ)XMYhDYL!RTNn%|xdjZ+-O6k%@M16s zMNbsC6u|6{mR8lcWTu*vj9R^)z}42ameK)?F6bC(}s z8YgaRl@p|*SS#T-S}6~^ovj?0lq6&-+PnGoE63ma^TB(28L6$Xot?F>emh&gWRm3& zb(9NXlO`Zt8z~bt!N=y@QWma-N}DzOuvcqh1SK#Nu1sSoWszsY@d){j>(*tQ2Yx{2 z>G$~h12WYnuE2OB{32#1Chc8%AW{)HBxYbKqU_}E{c}%TreVFvQ+Pit!39y^ zkVxQUmdsF7L&E+kHRRt4Aqyb|3|mlztiX>2QpwW7)`)7r3!hpOg5?8S9;n!If*5mr zUuu}1FvFDt-n_DUPaFNNE9n#jUgpr=<#pFf3l$L5Y&Ozte*1WOp&NW=b4MhzBto5D zFP%k1xH8K+?OvRr&e~?H=Ht$=Gbf4xXh|}d-pxNe_t+ID0BFA4*}%cbF=RDq z^I)J*u^Y^mgO5^Y16t=r!A`+%Sc?R-*v@as8}IYD^ES%sntzjD?HmIOI^xbf)gpTBF}gs%r+Nx+dRocn){(QJ|4(<46eNpyyAGZ zPy(yP=-{eTL#o2Sx21aQW37uoIN%7SNAd2P??Vi#Nwl{{BepIAKLjpi&NT<$bkng} z=Wi1*O^k?NFN3gj<>bB8yudNNd|=BZt{?s&mR{g61X(6ra8RKkyrlZzN?2WK0>Ih> zMkrCFw2M&@OB`jz=bvwW?JKL#{?^rc+mk#u$SP!I0NuD)FkKtm-oN$NKRvipymk#A zWyD!)grEA_#&3Ln?z`Z=NnsIru4~u6G);^{$xd&@XYSkA-oGBrMOF}mx3{(~T)5Eb zb`a75V-4ytaA*-x6q(l#w>q61vb}QO_Xh9X7~k4w1?LoF-*GX6J+K;Xz)>ws5NTlv zIpv}9ph~fQ6 z9_5&`j?X^-+3vT$x$(JgKOJ_rWuA-=Z_cLut&NR5&5~4|dt|GB?Z&%*eQobf_TlYf zq3ddG{rornkUsG|gt-wQ#6nz<=ObVcn2#jHYOlT0Xb$clesJ@;)F3&y`_}vM-NUy` zD%AOBAHVw46FZmBKe=;}G7p5Q2&GXhv;=j&=OuxA{K56{+cyXVuPReeDdk}iCo)Qn zK-qBQfshQ5db%V@f9#f6?nIV}xm*@jjf6}Hh;4~g?vVQW>dp(#G%lWlXs3gt;;bA0{+{nod)Ui{+a*6LO+#bi9_pY*R>*_y=>lK%NCj}3PF@BG!<_iob<_GB8g z$+zx4;sI`w?yg=bwAx$_vlbTdjGP%_b9-z!^3i4w3I*AdD)`3n{?A1!I(R0l{!_ zssOMzsJlko?C|8&x8q|T7$|a7$v%7FCK_-BfrD|)ulL%mPRCvE2;Z5e336z#z3y$a zSNIiAYX~hFO=m|Z!<)M}F0=*UK?A8s*#TEdU0oVCax+6&R{7P_LX{hzDn(ST%k#qQ zwdO$~VeFli8CPS2WI^|5nDYc9{=y4emoK*z$@<58VLg;;a(-w1WdBh6Z2SC`kKVn0 z?eFg1yA|I#;dEuYzWVs1-}ysl=aGp9S%71e(bx(EwF?svJc%ZV%lTw>bbJi@DGGsw zMyo<~R-_sgSTRK?94OJ@JJ;v^Q4oeX200HazIjf;&`R@;x4 z*2^FFz)BknT-iBW|2sIGI`#T$Cv3Gc&S8`F+&s;IO)!t8k*LTh;b|rd&|=u}4Cb5$ z9`jrg=XsnMJP?p+BhIoaab59&N&z!DYt*xpjaH2bG?I=3W_gHeE`)K!QBoQalTG(5 znLk*ede>R+1(+7o(X`PF+z{WnwMP*3Y0$qHz5c_4SO0!An0vML9eMSI%isJ1+3g}N zQVl!`GwvXk&_@s?59N6tM{!XUVXfBh_c39f??CmG=afmf?INL}+vs-uAk4Fr z!=MqRS?)lJGUgn-eIN{|;6+vl(`duY%rQ>s07wE+NlTR_!pstYiVQc!W`|e1AX!%b zr(HH)3VjVB(llQn-i5!3DC2pG%iLsWA+7Wb>$2zxLdSL3y?eWzR(-vsm1>IKf;`ZXsA+e_@Wr)!AN3J9?&-x<;y{QB(r36gDTBU&IFfT|h zk%fbJA(0MyZCR*d5i2c!wrc)`K?6$|iD188YxJ7fbJC(P+$m`?u0#=MDa?Ly0udnK z+JZ>c3tRUUtMG?6Nifg#P%V#Q(@?|qs7g^LUdpo7ndN26^vWNr>gka6Co+92NC$lh z|2nL2tID)>60u&HSdXUTOPlp>uk+!1?{BPZ+`reqePi*{AIERKmutW2ZEiWg@lxkY zFOMk}dB!pEIC5YGW3#VfD>i_N0KPb+N447RJkL4jw(Czbp$ks6j)tRXx_~hUqjv1% z`t0z|Eu|%BcmygPDlzb&KpX^cIfoMqwn4}`_0~Eo7q%QsqvNqwswgCqXHfcI@W61{ z2AG){(X0_Pdu`+p#krP>$4NAsO9+xPrN4Q#4VMid6obZUOa0K*R2#x2q~KC9$5Fn| z^UNT^hItB9p3;WLG;l_cVIJu6v(hsOxXUug40{+H`^1yL%@S4>0wiN2S~P~aWH`#6 zc6;x?|K4Ml9^Jb&`0&kxpS+V@-z5R*=;jJ}{xj__ygbI(GwgJUN`p^gz0nNEg+jWp z*|UtDQ|Jaqhlj>x5Cl^I7r3rKSdL?ra^gZSC9^D#Qi`+-!30HNhZhPt4sdxvA_87r z6d7}AE`?&O_sG@STDK@fJd2<$1LTbYJX=cYPhE;WZiSse(+Nfm*DvO=fOC+;QK%F| zUU6wHrmZaB`Y?d~HH>nh(JU>+v?VSoE1w1_0HZ`Yuq~7tz|&3J{1jzT3;i=iK3-Nr zXEp&7vx=zii#!7xJ|!S_wcJ&Ckp}O)HCbQJAAjc2S6> z{LcF4UmnSb3YGJmI?NAi6s(tB&+`DPHUxE;1y=)fOo9jW^5a%m`J5=Q@?od}pMcH>6L8Y8?vez9*&QfEG0(X+E-Sb)dWFzAhY;q# zo#P-%M;2_RmZD)COEDs@BM4BaO~Yge9(V}_lTwbSPM?hx{g?mu;I2*xGcZm;{lHFk z0NO8q7$Zck?XB#|C(4OF|lJJwd4yVsmqC;c1!)l>l`Nh|`+HMiqj=J{g^T^?_geF)Qrs znQw;9+Pb8{>n0%^S%8_ZLs=mTYnxo1I`DIa@hdg~b1-9fD{JEZl~4q10Q1qrZ3vuK?)SU;cyr&7PUsW zm@fn`v{C)QK$$B?f+2%hg<9m`g0E=7xiHGn2C7grOHDX%xpwt5&n#Xg0v>LP(fuLoenyCZbl1oJ>Yqza}~6s4TkWueaX8py4OpZoI8@Bd!p1)sQJ17joPOIq{ z+(KjcL@uF@7bvYVF0woWVPgy(CjqI$)hwbnVeRYw$v;1E0L1Q72B zt|$cszcZM{r$!0AmgC!sQif3O8{P7PxOS;w@h%Bs#8d!~TTk-!MD@ElhM3@lir z@hmMUxV#Bb;vfhuoy{~fEG0B=wo(f!mYSF|?-8=CzL_ae?Z5%diyUim(w}dvwf86K zk(|gMyqaEl{Mq07g7jS`K-E;*Q)}h>egljrjN_8AfzVZarQ$M5;w;UJEH9E2OPwca zzKCU%<#E=2WYhONC{VG30-zTnOhAcU|e6XA?)`qFQ{EJn;P;V2s?k&dEf*nRwxyS)+y0i@&R-n#tVd4cYTD)`sD#Ir22JfMMsnipc3c&MCjpQLHs(Y)%A4#ga7q^>u$8y zpL@zJ2o6GO=va)>zzf=b7%<1&PUw>oQCQ=pob%~?Q6yP0SxgU(7n5n0WcF?HR(iVK z0P-s+=pEN{k>h}Ib&`$t_UE_uv*F0e3t~p$VB%WXT3Z;*SGum#eEiDQuf8-7aXgsL z_U?z zB$cnnQapk1>E2z+DU6Mhc7VD>9S7Q7=Gc*piqnsN{L|X{M!nmioO?j$gW-rvS;O^O z*b$V?ioBoYg^~^CV9F-5MV{vAEIPWqoAk$03daqcZYx~rBF~jVJBHXtk(5~^^J0G3 zpWMAi<`F3*RdB!qh-+$kUT{O35I}JURE9VnkT4)VeHM`5H9fvJJh!JNY)UWz&H`S?+kT2Xt&lLxyU?k zKAGlw$ZgbAl8ckc^zb-~6Dl>JaJ~zQa+3lNME)>fsT(v;m|jk!MSmz^;I2(6WGe$| zsXEn{uEu3&w;p{;;yA^Rth1V(J!&&Bvm8nj?rhSzl_m}iH+qe=6^^y!1(S#mrzFZ} zCxiIjkzB-3R00f7w99A!hdm4;LzfpK=}&552#hU1DDo5%^;AXIFBjOycG>12rLJbi zC6SaIG>}GR{Q3`HPm_4#$wyp27}jc6FJB3}ow&$m6!}2W#a-%CKM+_ZaddKYG#U=N zoz|Ow^?eLJ3NF;LaYkLG3OPFHBLzq)k*Ziki-ThX8+#6omw>@4M4pzh0h(3S7d6YP zz^c2_!CEk^CZh=-&vc%OBt=4#q)@XMC3zYre4b#4ye-!gE5EFK_&b*yUN!rza0bIo zgS3aG)pljmX7fTUR%%E#hAIQ|z7ym+v-uWAXdO^)k_!Lwf4#0{?_?(pLqHiztzq$&X62Ni)Ov%VHjv19o%nn^7>!?Wx%y^ z9JlRZA)wF8#Pt3#=F)ZDOys0c$hXNt0<@7KN^mDJJ(UkR%GBg@P%Yt9l zIxW8zN{{)>P3Q4=JVqLMAk1}Sn#(vh95urWG95bnS0HEsB|TjvDk}(w3>(ad;EI5Y zw+nR+*c(c{OdEV)ZCRh066}Hw%>ySV7WnXtr2)YepslmJ`^jj+nl;v_?RKvn+`97{ zpL)^D)o?Mb^;)fNr^t%8-hIn)+53O@DqCdOa~Wd_=^{-D#*@K-BpK!b+Xy80q5xkl zmQSP6(XlJc)NyI7U-m%{enf4#?A83GxlVI??20pwis0@Od5QMVy#d&ae>xvo@qi z$DDr%$pW&t5jT~n5qxsMFAWXZPBlx@p7N!!UkjcQwRUpEl7(E~a~dH?^R3S;{4`zt}%#&Trk9; z2?x#(u-C!p%zDXcO@+!%CPyb@%q0tbTJtH!qTtHd0E`z4k)&=dP$tchW-?kVz)3q- zI^)2ZDU{~iJS{t7Jqw;acvJ0MNo!8Y+U4^UVZL`Vc;saldA&0pkNC}FyF7!k-Mw>D(NbFgDr z8kAtys1|GjAe7uv%Y;w>wWSbZx&S3c0p%TXnNcYU(Ddgyk}8T95|BBJxF{k3`he(S zYAsVR<8owvCT;NS6Ek+GNKm!5wei~j@h4&)`$cIyEXsq3=riE#&tAVmANI2k%j6H^ z%2?&}9iXJ%suRaBv?Kzyj8xWsl$zJi5~Mgcqbp1#mZeL!olp{88d9j!=BnIj4T=by zLs6{sc7j?s*gq6$PE{#gTYfOZ7!a7)G4W|BRirscenArHXgje3Tt-^(#QJh-E_IH1 zUWha|HsB0#DR|)oKH@S(fn{Z+ zR5ne+`umW)8U`qH9#RZUM8$}3h~$MXxMTTeT&O4$K*c8xP~qUIN%J9zSe~#y=hm5j z2=I&|!0iZ1HHeO_-e+ z4UKX8C1?Iojmq=`z~{N7#*M{P26i7UiM`+rB9VwP7i4YNb=*Q)+mX|GP=$n6h1Hp< z8tgm@>x`=cmbiFO$WyY|sj;k}6cU3&H*7bZR*kxjSfuI6NXuMjg-8>f3kHKu9}Wef zjapAAW5BDG{y6q!`HyIfea}zEbApJd$ezFIvwG-(Ex)gQTEFO#8mY!7umza zrb8Kykg~ijbMwKfSyq7}r;pnTGEKK4@iJSn)KVCyen8bUP?vz^U_d!*vT7K>568_^ zNq1*Dvr;Q#LbIhQvuV}CEpINIXUZP7+H)G4t6rz+Ae>F&d9)}N2`&UFxEXT@w;nRz zN5JPOR4yS*#&|CLl6I)%AJ8IB@L7EPA968FAE@O^3_;oM6PaA{U-a1QWd`$9neZ}X zD4w>sHzc&vx(PZhVXc18ehYl|<|=cY{=TXr%z*o2pDhNZx3Rw}BUFFpqY+#U^Qusz z@-ieiQy`p?%$$)tiJ~BNztL?&6!7sdn$B>-v4O;(3^8v4^=mHmWh(R75{iK4s!+KN zm?-t1ds&O3lAru5KB5P&U*`<_*b5x>Ox&m_w?oUa)@C0hr6?Ve0(6=3wZy@+%^@I` zwry=b9(wz%B_>q<_G@ypP=%p3DYaazXaCmeURY%dn{Jkx>_2^`nN>>`0-UuD3xW{T zCBuo#1sJYz0lTO9c?u)&CD9~{QZTsCX2SqT8ZoF2sXl}5ee4AW5mMqZ((~83m@Zo= zds0_xp?XVx?(#bG5y})iWh)?J>$=i*2iY6|Bjc)6<7SzxrPEXr%SbuWLz{`1BIKaX?h;*}xPNMu=5AQH% zg0BBj3+30o7+!{3p3;=`uW|!VZ}-_RZ?S1qVV1i3fwuQO^G@Smx;OmXLeRN}9I(j2Km-cT_R>D-8jvd<<+sM5?eW{4t-;aypl(*Z=WX*itg0ADE;( z%%l3*i<~|WTjuL!y?=J6Sfb69u{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..47bae47a380acc38315454469b1e3e7a48c667a3 100644 GIT binary patch literal 57787 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

5;qDB6Er0O5)GM{0-q|)O39ls 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 diff --git a/lib/data/dtos/recipes_dto.dart b/lib/data/dtos/recipes_dto.dart index fffb5f6..90c9b49 100644 --- a/lib/data/dtos/recipes_dto.dart +++ b/lib/data/dtos/recipes_dto.dart @@ -4,38 +4,55 @@ part 'recipes_dto.g.dart'; @JsonSerializable(createToJson: false) class RecipesDto { - final List? hits; + final List? data; + final MetaDto? meta; - const RecipesDto({this.hits}); + const RecipesDto({ + this.data, + this.meta, + }); - factory RecipesDto.fromJson(Map json) => - _$RecipesDtoFromJson(json); + factory RecipesDto.fromJson(Map json) => _$RecipesDtoFromJson(json); } @JsonSerializable(createToJson: false) class RecipeDataDto { - final RecipeAttributesDataDto? recipe; + final String? id; + final String? type; + final RecipeAttributesDataDto? attributes; - const RecipeDataDto({this.recipe}); + const RecipeDataDto({this.id, this.type, this.attributes}); - factory RecipeDataDto.fromJson(Map json) => - _$RecipeDataDtoFromJson(json); + factory RecipeDataDto.fromJson(Map json) => _$RecipeDataDtoFromJson(json); } @JsonSerializable(createToJson: false) class RecipeAttributesDataDto { - final String? label; - final double? calories; - final String? url; + final String? name; + final String? calories; + final String? died; final String? image; - const RecipeAttributesDataDto({ - this.label, - this.calories, - this.url, - this.image, - }); + const RecipeAttributesDataDto({this.name, this.calories, this.died, this.image}); factory RecipeAttributesDataDto.fromJson(Map json) => _$RecipeAttributesDataDtoFromJson(json); } + +@JsonSerializable(createToJson: false) +class MetaDto { + final PaginationDto? pagination; + + const MetaDto({this.pagination}); + + factory MetaDto.fromJson(Map json) => _$MetaDtoFromJson(json); +} + +@JsonSerializable(createToJson: false) +class PaginationDto { + final int? next; + + const PaginationDto({ this.next}); + + factory PaginationDto.fromJson(Map json) => _$PaginationDtoFromJson(json); +} diff --git a/lib/data/mappers/recipes_mapper.dart b/lib/data/mappers/recipes_mapper.dart index 478d443..7f8bb18 100644 --- a/lib/data/mappers/recipes_mapper.dart +++ b/lib/data/mappers/recipes_mapper.dart @@ -1,28 +1,28 @@ import 'package:leonteva_pmu/data/dtos/recipes_dto.dart'; import 'package:leonteva_pmu/domain/models/card.dart'; +import 'package:leonteva_pmu/domain/models/home.dart'; -const String imagePlaceholder = - 'https://cdn-icons-png.flaticon.com/512/4036/4036418.png'; +const _imagePlaceholder = + 'https://upload.wikimedia.org/wikipedia/en/archive/b/b1/20210811082420%21Portrait_placeholder.png'; + +extension RecipesDtoToModel on RecipesDto { + HomeData toDomain() => HomeData( + data: data?.map((e) => e.toDomain()).toList(), + nextPage: meta?.pagination?.next, + ); +} extension RecipeDataDtoToModel on RecipeDataDto { CardData toDomain() => CardData( - recipe?.label ?? 'UNKNOWN', // Используем поле label из recipe. - imageUrl: recipe?.image ?? imagePlaceholder, // Используем поле image. - descriptionText: _makeDescriptionText( - recipe?.calories?.toString(), // Преобразуем double в строку. - recipe?.url, // Используем поле url. - ), - ); + attributes?.name ?? 'UNKNOWN', + imageUrl: attributes?.image ?? _imagePlaceholder, + descriptionText: _makeDescriptionText(attributes?.calories), + id: id, + ); - String _makeDescriptionText(String? calories, String? url) { - if (calories != null && url != null) { - return 'Calories: $calories\nURL: $url'; - } else if (calories != null) { - return 'Calories: $calories'; - } else if (url != null) { - return 'URL: $url'; - } else { - return 'No description available'; - } + String _makeDescriptionText(String? calories) { + return calories != null + ? 'calories: $calories' + : ''; } } diff --git a/lib/data/repositories/api_interface.dart b/lib/data/repositories/api_interface.dart index a5ca4b6..3b6fdcc 100644 --- a/lib/data/repositories/api_interface.dart +++ b/lib/data/repositories/api_interface.dart @@ -1,7 +1,12 @@ -import 'package:leonteva_pmu/domain/models/card.dart'; +import 'package:leonteva_pmu/domain/models/home.dart'; typedef OnErrorCallback = void Function(String? error); abstract class ApiInterface { - Future?> loadData({OnErrorCallback? onError}); + Future loadData({ + OnErrorCallback? onError, + String? q, + int page = 1, + int pageSize = 25, + }); } \ No newline at end of file diff --git a/lib/data/repositories/mock_repository.dart b/lib/data/repositories/mock_repository.dart index b7f286d..8abe2fb 100644 --- a/lib/data/repositories/mock_repository.dart +++ b/lib/data/repositories/mock_repository.dart @@ -1,30 +1,38 @@ import 'package:flutter/material.dart'; import 'package:leonteva_pmu/data/repositories/api_interface.dart'; import 'package:leonteva_pmu/domain/models/card.dart'; +import 'package:leonteva_pmu/domain/models/home.dart'; class MockRepository extends ApiInterface { @override - Future?> loadData({OnErrorCallback? onError}) async { - return [ - CardData( - 'dish1', - descriptionText: 'hehehe', - imageUrl: - 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg', - ), - CardData( - 'dish2', - descriptionText: 'eeee', - icon: Icons.hail, - imageUrl: - 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg', - ), - CardData( - 'dish3', - descriptionText: 'aaaaaa', - icon: Icons.warning_amber, - imageUrl: 'https://n1s2.hsmedia.ru/48/2d/63/482d63d02b668677a73a2ffbd791a71b/728x546_1_aaca034dfa8a8c33247bd8cb2ed26817@1700x1275_0xac120003_9749770561671744766.jpeg', - ), - ]; + Future loadData({ + OnErrorCallback? onError, + String? q, + int page = 1, + int pageSize = 25, + }) async { + return HomeData( + data: [ + CardData( + 'Freeze', + descriptionText: 'so cold..', + imageUrl: + 'https://www.skedaddlewildlife.com/wp-content/uploads/2018/09/depositphotos_22425309-stock-photo-a-lonely-raccoon-in-winter.jpg', + ), + CardData( + 'Hi', + descriptionText: 'pretty face', + icon: Icons.hail, + imageUrl: + 'https://www.thesprucepets.com/thmb/nKNaS4I586B_H7sEUw9QAXvWM_0=/2121x0/filters:no_upscale():strip_icc()/GettyImages-135630198-5ba7d225c9e77c0050cff91b.jpg', + ), + CardData( + 'Orange', + descriptionText: 'I like autumn', + icon: Icons.warning_amber, + imageUrl: 'https://furmanagers.com/wp-content/uploads/2019/11/dreamstime_l_22075357.jpg', + ), + ], + ); } -} \ No newline at end of file +} diff --git a/lib/data/repositories/recipe_repository.dart b/lib/data/repositories/recipe_repository.dart index 6f9e44a..aa05f8a 100644 --- a/lib/data/repositories/recipe_repository.dart +++ b/lib/data/repositories/recipe_repository.dart @@ -2,7 +2,7 @@ import 'package:dio/dio.dart'; import 'package:leonteva_pmu/data/dtos/recipes_dto.dart'; import 'package:leonteva_pmu/data/mappers/recipes_mapper.dart'; import 'package:leonteva_pmu/data/repositories/api_interface.dart'; -import 'package:leonteva_pmu/domain/models/card.dart'; +import 'package:leonteva_pmu/domain/models/home.dart'; import 'package:pretty_dio_logger/pretty_dio_logger.dart'; class RecipeRepository extends ApiInterface { @@ -10,37 +10,34 @@ class RecipeRepository extends ApiInterface { ..interceptors.add(PrettyDioLogger( requestHeader: true, requestBody: true, - responseHeader: true, - responseBody: true, - error: true, )); - static const String _baseUrl = 'https://api.edamam.com'; - static const String _appId = ''; // Укажите ваш APP_ID. - static const String _appKey = '<988fcbbd552b83ca870efced716389e4>'; // Укажите ваш APP_KEY. + static const String _baseUrl = 'http://127.0.0.1:8000'; @override - Future?> loadData({String? q, OnErrorCallback? onError}) async { + Future loadData({ + OnErrorCallback? onError, + String? q, + int page = 1, + int pageSize = 5, + }) async { try { - final String url = '$_baseUrl/search'; + const String url = '$_baseUrl/recipes/'; - final Response response = await _dio.get( + final Response response = await _dio.get>( url, queryParameters: { - 'q': q ?? '', // Параметр запроса для поиска рецептов. - 'd683b7dc': _appId, - '988fcbbd552b83ca870efced716389e4': _appKey, + 'fullName': q, + 'page': page, + 'size': pageSize, }, ); - final RecipesDto dto = - RecipesDto.fromJson(response.data as Map); - final List? data = - dto.hits?.map((e) => e.toDomain()).toList(); // Преобразуем DTO в модель. + final RecipesDto dto = RecipesDto.fromJson(response.data as Map); + final HomeData data = dto.toDomain(); return data; } on DioException catch (e) { - // Обработка ошибки и передача сообщения через onError. - onError?.call(e.response?.statusMessage ?? 'Unknown error'); + onError?.call(e.error?.toString()); return null; } } diff --git a/lib/domain/models/card.dart b/lib/domain/models/card.dart index 4faa8f7..4cd7e71 100644 --- a/lib/domain/models/card.dart +++ b/lib/domain/models/card.dart @@ -5,11 +5,13 @@ class CardData { final String descriptionText; final IconData icon; final String? imageUrl; + final String? id; CardData( this.text, { required this.descriptionText, this.icon = Icons.ac_unit_outlined, this.imageUrl, + this.id, }); } diff --git a/lib/main.dart b/lib/main.dart index f41f5f6..f05ca8c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,15 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:leonteva_pmu/components/locale/l10n/app_locale.dart'; +import 'package:leonteva_pmu/data/repositories/recipe_repository.dart'; +import 'package:leonteva_pmu/presentation/home_page/bloc/bloc.dart'; import 'package:leonteva_pmu/presentation/home_page/home_page.dart'; +import 'package:leonteva_pmu/presentation/like_bloc/like_bloc.dart'; +import 'package:leonteva_pmu/presentation/locale_bloc/locale_bloc.dart'; +import 'package:leonteva_pmu/presentation/locale_bloc/locale_state.dart'; + void main() { runApp(const MyApp()); } @@ -9,14 +19,37 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - debugShowCheckedModeBanner: false, - theme: ThemeData( - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), - useMaterial3: true, + return BlocProvider( + lazy: false, + create: (context) => LocaleBloc(const Locale("ru")), + child: BlocBuilder( + builder: (context, state) { + return MaterialApp( + title: 'Flutter Demo', + locale: state.currentLocale, + localizationsDelegates: AppLocale.localizationsDelegates, + supportedLocales: AppLocale.supportedLocales, + debugShowCheckedModeBanner: false, + theme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.orangeAccent), + useMaterial3: true, + ), + home: RepositoryProvider( + lazy: true, + create: (_) => RecipeRepository(), + child: BlocProvider( + lazy: false, + create: (context) => LikeBloc(), + child: BlocProvider( + lazy: false, + create: (context) => HomeBloc(context.read()), + child: const HomePage(), + ), + ), + ), + ); + }, ), - home: const HomePage(title: 'Leonteva_V.A._PIbd-33'), ); } } diff --git a/lib/presentation/dialogs/error_dialog.dart b/lib/presentation/dialogs/error_dialog.dart deleted file mode 100644 index ccfe5fc..0000000 --- a/lib/presentation/dialogs/error_dialog.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:flutter/material.dart'; - -class ErrorDialog extends StatelessWidget { - final String? error; - const ErrorDialog(this.error, {super.key}); - @override - Widget build(BuildContext context) { - return Center( - child: Material( - color: Colors.transparent, - child: Container( - margin: const EdgeInsets.all(36), - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.grey, - borderRadius: BorderRadius.all(Radius.circular(10)), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const Icon(Icons.error, color: Colors.white), - const SizedBox(height: 12), - Text( - error ?? 'UNKNOWN', - style: Theme.of(context).textTheme.bodyLarge?.copyWith(color: Colors.white), - ), - ], - ), - ), - ), - ); - } -} \ No newline at end of file diff --git a/lib/presentation/dialogs/show_dialog.dart b/lib/presentation/dialogs/show_dialog.dart deleted file mode 100644 index 6c37a50..0000000 --- a/lib/presentation/dialogs/show_dialog.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:leonteva_pmu/presentation/dialogs/error_dialog.dart'; - -void showErrorDialog( - BuildContext context, { - required String? error, - }) { - showDialog( - context: context, - builder: (_) => ErrorDialog(error), - ); -} \ No newline at end of file diff --git a/lib/presentation/home_page/card.dart b/lib/presentation/home_page/card.dart index 0b4a7b0..5f80dae 100644 --- a/lib/presentation/home_page/card.dart +++ b/lib/presentation/home_page/card.dart @@ -1,14 +1,16 @@ part of 'home_page.dart'; -typedef OnLikeCallback = void Function(String title, bool isLiked)?; +typedef OnLikeCallback = void Function(String? id, String title, bool isLiked)?; -class _Card extends StatefulWidget { +class _Card extends StatelessWidget { final String text; final String descriptionText; final IconData icon; final String? imageUrl; final OnLikeCallback onLike; final VoidCallback? onTap; + final String? id; + final bool isLiked; const _Card( this.text, { @@ -17,12 +19,15 @@ class _Card extends StatefulWidget { this.imageUrl, this.onLike, this.onTap, + this.id, + this.isLiked = false, }); factory _Card.fromData( CardData data, { OnLikeCallback onLike, VoidCallback? onTap, + bool isLiked = false, }) => _Card( data.text, @@ -31,22 +36,17 @@ class _Card extends StatefulWidget { imageUrl: data.imageUrl, onLike: onLike, onTap: onTap, + isLiked: isLiked, + id: data.id, ); - @override - State<_Card> createState() => _CardState(); -} - -class _CardState extends State<_Card> { - bool isLiked = false; - @override Widget build(BuildContext context) { return GestureDetector( - onTap: widget.onTap, + onTap: onTap, child: Container( margin: const EdgeInsets.all(16), - constraints: const BoxConstraints(minHeight: 140), + constraints: const BoxConstraints(minHeight: 160), decoration: BoxDecoration( color: Colors.white70, borderRadius: BorderRadius.circular(20), @@ -75,12 +75,11 @@ class _CardState extends State<_Card> { children: [ Positioned.fill( child: Image.network( - widget.imageUrl ?? '', + imageUrl ?? '', fit: BoxFit.cover, errorBuilder: (_, __, ___) => const Placeholder(), ), ), - ], ), ), @@ -92,11 +91,11 @@ class _CardState extends State<_Card> { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - widget.text, - style: Theme.of(context).textTheme.headlineLarge, + text, + style: Theme.of(context).textTheme.headlineSmall, ), Text( - widget.descriptionText, + descriptionText, style: Theme.of(context).textTheme.bodyLarge, ) ], @@ -106,18 +105,11 @@ class _CardState extends State<_Card> { Align( alignment: Alignment.bottomRight, child: Padding( - padding: const EdgeInsets.only( - left: 8.0, - right: 16, - bottom: 16, - ), + padding: const EdgeInsets.only(left: 8, right: 16, bottom: 16), child: GestureDetector( - onTap: () { - setState(() => isLiked = !isLiked); - widget.onLike?.call(widget.text, isLiked); - }, + onTap: () => onLike?.call(id, text, isLiked), child: AnimatedSwitcher( - duration: const Duration(microseconds: 200), + duration: const Duration(milliseconds: 200), child: isLiked ? const Icon( Icons.favorite, @@ -131,7 +123,7 @@ class _CardState extends State<_Card> { ), ), ), - ) + ), ], ), ), diff --git a/lib/presentation/home_page/home_page.dart b/lib/presentation/home_page/home_page.dart index 5b15445..33832b0 100644 --- a/lib/presentation/home_page/home_page.dart +++ b/lib/presentation/home_page/home_page.dart @@ -1,16 +1,25 @@ -import 'package:flutter/material.dart'; -import 'package:leonteva_pmu/data/repositories/recipe_repository.dart'; -import 'package:leonteva_pmu/presentation/details_page/details_page.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:leonteva_pmu/components/extensions/context_x.dart'; +import 'package:leonteva_pmu/components/utils/debounce.dart'; import 'package:leonteva_pmu/domain/models/card.dart'; -import 'package:leonteva_pmu/presentation/dialogs/show_dialog.dart'; +import 'package:leonteva_pmu/presentation/common/svg_objects.dart'; +import 'package:leonteva_pmu/presentation/details_page/details_page.dart'; +import 'package:leonteva_pmu/presentation/home_page/bloc/bloc.dart'; +import 'package:leonteva_pmu/presentation/home_page/bloc/events.dart'; +import 'package:leonteva_pmu/presentation/home_page/bloc/state.dart'; +import 'package:leonteva_pmu/presentation/like_bloc/like_bloc.dart'; +import 'package:leonteva_pmu/presentation/like_bloc/like_event.dart'; +import 'package:leonteva_pmu/presentation/like_bloc/like_state.dart'; +import 'package:leonteva_pmu/presentation/locale_bloc/locale_bloc.dart'; +import 'package:leonteva_pmu/presentation/locale_bloc/locale_events.dart'; +import 'package:leonteva_pmu/presentation/locale_bloc/locale_state.dart'; part 'card.dart'; class HomePage extends StatefulWidget { - const HomePage({super.key, required this.title}); - - final String title; + const HomePage({super.key}); @override State createState() => _HomePageState(); @@ -19,32 +28,53 @@ class HomePage extends StatefulWidget { class _HomePageState extends State { @override Widget build(BuildContext context) { - return const Scaffold(body: Body()); + return const Scaffold(body: _Body()); } } -class Body extends StatefulWidget { - const Body({super.key}); // ключи +class _Body extends StatefulWidget { + const _Body(); @override - State createState() => _BodyState(); - } + State<_Body> createState() => _BodyState(); +} -class _BodyState extends State { +class _BodyState extends State<_Body> { final searchController = TextEditingController(); - late Future?> data; - - final repo = RecipeRepository(); + final scrollController = ScrollController(); @override void initState() { - const String query = 'default_query'; // Укажите поисковый запрос по умолчанию + SvgObjects.init(); - // Загружаем данные с обработкой ошибок - data = repo.loadData( - q: query, - onError: (e) => showErrorDialog(context, error: e), - ); + WidgetsBinding.instance.addPostFrameCallback((_) { + context.read().add(const HomeLoadDataEvent()); + context.read().add(const LoadLikesEvent()); + }); + + scrollController.addListener(_onNextPageListener); + + super.initState(); + } + + void _onNextPageListener() { + if (scrollController.offset > scrollController.position.maxScrollExtent) { + // preventing multiple pagination request on multiple swipes + final bloc = context.read(); + if (!bloc.state.isPaginationLoading) { + bloc.add(HomeLoadDataEvent( + search: searchController.text, + nextPage: bloc.state.data?.nextPage, + )); + } + } + } + + @override + void dispose() { + searchController.dispose(); + scrollController.dispose(); + super.dispose(); } @override @@ -53,45 +83,89 @@ class _BodyState extends State { padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top), child: Column( children: [ - Padding( - padding: const EdgeInsets.all(12), - child: CupertinoSearchTextField( - controller: searchController, - onChanged: (search) { - setState(() { - data = repo.loadData(q: search); - }); - }, - ), - ), - Expanded( - child: Center( - child: FutureBuilder?>( - future: data, - builder: (context, snapshot) => SingleChildScrollView( - child: snapshot.hasData - ? Column( - mainAxisAlignment: MainAxisAlignment.center, - children: snapshot.data?.map((data) { - return _Card.fromData( - data, - onLike: (String title, bool isLiked) => - _showSnackBar(context, title, isLiked), - onTap: () => _navToDetails(context, data), - ); - }).toList() ?? - [], - ) - : const CircularProgressIndicator(), + Row( + children: [ + Expanded( + flex: 4, + child: Padding( + padding: const EdgeInsets.all(12), + child: CupertinoSearchTextField( + controller: searchController, + placeholder: context.locale.search, + onChanged: (search) { + Debounce.run( + () => context.read().add(HomeLoadDataEvent(search: search))); + }, + ), ), ), - ), + GestureDetector( + onTap: () => context.read().add(const ChangeLocaleEvent()), + child: SizedBox.square( + dimension: 50, + child: Padding( + padding: const EdgeInsets.only(right: 12), + child: BlocBuilder( + builder: (context, state) { + return state.currentLocale.languageCode == 'ru' + ? const SvgRu() + : const SvgUk(); + }, + ), + ), + ), + ), + ], + ), + BlocBuilder( + builder: (context, state) => state.error != null + ? Text( + state.error ?? '', + style: Theme.of(context).textTheme.headlineSmall?.copyWith(color: Colors.red), + ) + : state.isLoading + ? const CircularProgressIndicator() + : BlocBuilder( + builder: (context, likeState) { + return Expanded( + child: RefreshIndicator( + onRefresh: _onRefresh, + child: ListView.builder( + controller: scrollController, + padding: EdgeInsets.zero, + itemCount: state.data?.data?.length ?? 0, + itemBuilder: (context, index) { + final data = state.data?.data?[index]; + return data != null + ? _Card.fromData( + data, + onLike: _onLike, + isLiked: likeState.likedIds?.contains(data.id) == true, + onTap: () => _navToDetails(context, data), + ) + : const SizedBox.shrink(); + }, + ), + ), + ); + }, + ), + ), + BlocBuilder( + builder: (context, state) => state.isPaginationLoading + ? const CircularProgressIndicator() + : const SizedBox.shrink(), ), ], ), ); } + Future _onRefresh() { + context.read().add(HomeLoadDataEvent(search: searchController.text)); + return Future.value(null); + } + void _navToDetails(BuildContext context, CardData data) { Navigator.push( context, @@ -99,11 +173,18 @@ class _BodyState extends State { ); } + void _onLike(String? id, String title, bool isLiked) { + if (id != null) { + context.read().add(ChangeLikeEvent(id)); + _showSnackBar(context, title, !isLiked); + } + } + void _showSnackBar(BuildContext context, String title, bool isLiked) { WidgetsBinding.instance.addPostFrameCallback((_) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( - 'O! $title ${isLiked ? 'liked!' : 'disliked :('}', + '$title ${isLiked ? context.locale.liked : context.locale.disliked}', style: Theme.of(context).textTheme.bodyLarge, ), backgroundColor: Colors.orangeAccent, diff --git a/pubspec.lock b/pubspec.lock index ba2f9fd..5340885 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "88399e291da5f7e889359681a8f64b18c5123e03576b01f32a6a276611e511c3" + sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" url: "https://pub.dev" source: hosted - version: "78.0.0" + version: "76.0.0" _macros: dependency: transitive description: dart @@ -18,10 +18,18 @@ packages: dependency: transitive description: name: analyzer - sha256: "62899ef43d0b962b056ed2ebac6b47ec76ffd003d5f7c4e4dc870afe63188e33" + sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "6.11.0" + archive: + dependency: transitive + description: + name: archive + sha256: "08064924cbf0ab88280a0c3f60db9dd24fec693927e725ecb176f16c629d1cb8" + url: "https://pub.dev" + source: hosted + version: "4.0.1" args: dependency: transitive description: @@ -38,6 +46,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" + bloc: + dependency: transitive + description: + name: bloc + sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e" + url: "https://pub.dev" + source: hosted + version: "8.1.4" boolean_selector: dependency: transitive description: @@ -126,6 +142,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" clock: dependency: transitive description: @@ -158,6 +182,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + copy_with_extension: + dependency: transitive + description: + name: copy_with_extension + sha256: fbcf890b0c34aedf0894f91a11a579994b61b4e04080204656b582708b5b1125 + url: "https://pub.dev" + source: hosted + version: "5.0.4" + copy_with_extension_gen: + dependency: "direct main" + description: + name: copy_with_extension_gen + sha256: "51cd11094096d40824c8da629ca7f16f3b7cea5fc44132b679617483d43346b0" + url: "https://pub.dev" + source: hosted + version: "5.0.4" crypto: dependency: transitive description: @@ -178,10 +218,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "64b717484993e85315d0c04081b6fca9ef8bac8c2cb794b2e15810250b335913" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "2.3.7" dio: dependency: "direct main" description: @@ -198,6 +238,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + equatable: + dependency: "direct main" + description: + name: equatable + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + url: "https://pub.dev" + source: hosted + version: "2.0.7" fake_async: dependency: transitive description: @@ -206,6 +254,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" + url: "https://pub.dev" + source: hosted + version: "2.1.3" file: dependency: transitive description: @@ -227,6 +283,22 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_bloc: + dependency: "direct main" + description: + name: flutter_bloc + sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a + url: "https://pub.dev" + source: hosted + version: "8.1.6" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -235,11 +307,29 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + url: "https://pub.dev" + source: hosted + version: "2.0.7" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -264,6 +354,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + http: + dependency: transitive + description: + name: http + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 + url: "https://pub.dev" + source: hosted + version: "1.2.2" http_multi_server: dependency: transitive description: @@ -280,6 +378,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.1" + image: + dependency: transitive + description: + name: image + sha256: b50b415345578583de0f1cf4c7bd389f164de0b316d890c707b41133047dbc2a + url: "https://pub.dev" + source: hosted + version: "4.5.1" + intl: + dependency: "direct main" + description: + name: intl + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + url: "https://pub.dev" + source: hosted + version: "0.19.0" io: dependency: transitive description: @@ -308,10 +422,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: "8f52361c07497a7f2c16c13aac159f9be6fb12b1d67719eac98a21d9a205d571" + sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c url: "https://pub.dev" source: hosted - version: "6.9.2" + version: "6.9.0" leak_tracker: dependency: transitive description: @@ -392,6 +506,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" package_config: dependency: transitive description: @@ -408,6 +530,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.0" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" + source: hosted + version: "6.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" pool: dependency: transitive description: @@ -416,6 +594,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a + url: "https://pub.dev" + source: hosted + version: "6.0.1" pretty_dio_logger: dependency: "direct main" description: @@ -424,6 +610,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + provider: + dependency: transitive + description: + name: provider + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + url: "https://pub.dev" + source: hosted + version: "6.1.2" pub_semver: dependency: transitive description: @@ -440,6 +634,62 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + url: "https://pub.dev" + source: hosted + version: "2.2.3" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e + url: "https://pub.dev" + source: hosted + version: "2.4.2" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" + source: hosted + version: "2.4.1" shelf: dependency: transitive description: @@ -465,10 +715,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "1.5.0" source_helper: dependency: transitive description: @@ -549,6 +799,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7" + url: "https://pub.dev" + source: hosted + version: "1.1.15" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb" + url: "https://pub.dev" + source: hosted + version: "1.1.12" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad" + url: "https://pub.dev" + source: hosted + version: "1.1.16" vector_math: dependency: transitive description: @@ -597,6 +871,22 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" + source: hosted + version: "6.5.0" yaml: dependency: transitive description: @@ -607,4 +897,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.6.0 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 6481294..5a32a7d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,95 +1,52 @@ name: leonteva_pmu description: "A new Flutter project." -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -# In Windows, build-name is used as the major, minor, and patch parts -# of the product and file versions while build-number is used as the build suffix. +publish_to: 'none' version: 1.0.0+1 environment: sdk: ^3.6.0 - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. dependencies: dio: ^5.7.0 pretty_dio_logger: ^1.4.0 json_annotation: ^4.9.0 + # Виджеты + cupertino_icons: ^1.0.2 + flutter_svg: 2.0.7 + + # BLoC + equatable: ^2.0.5 + flutter_bloc: ^8.1.5 + copy_with_extension_gen: ^5.0.4 + + # Localization + flutter_localizations: + sdk: flutter + intl: 0.19.0 + + shared_preferences: 2.2.3 + flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.8 - dev_dependencies: build_runner: ^2.4.14 - json_serializable: ^6.9.2 + json_serializable: ^6.7.1 flutter_test: sdk: flutter - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. flutter_lints: ^5.0.0 + # Иконки + flutter_launcher_icons: 0.13.1 -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec +flutter_icons: + android: "ic_launcher" + ios: false + image_path: "assets/launcher.jpeg" + min_sdk_android: 21 -# The following section is specific to Flutter packages. flutter: - - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. + generate: true uses-material-design: true - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/to/asset-from-package - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/to/font-from-package + assets: + - assets/svg/