From 2cfb2ce592160e8d1be33716916c3f3daaf0574c Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Sat, 15 Nov 2025 13:03:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E5=8D=9A=E5=AE=A2?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {fonts => assets/fonts}/custom.ttf | Bin assets/images/avatar.jpg | Bin 0 -> 128945 bytes lib/apis/blog.dart | 31 ++++- lib/config/app_config.dart | 7 +- lib/layout/drawer.dart | 79 ++++++++++++ lib/layout/menu.dart | 16 +++ lib/main.dart | 2 + lib/models/blog.dart | 18 ++- lib/models/blog.g.dart | 8 ++ lib/pages/blog_detail_page.dart | 155 ++++++++++++++++++++++++ lib/pages/blog_list_page.dart | 139 +++++++++++++++++++++ lib/pages/blog_page.dart | 125 +++++++++++++++++-- lib/pages/category_page.dart | 154 ++++++++++++++++++++++++ lib/pages/home_page.dart | 187 ++++++----------------------- lib/widget/blog.dart | 65 ++++++---- lib/widget/common.dart | 18 +++ lib/widget/easy_refresh.dart | 65 ++++++++++ pubspec.lock | 26 +++- pubspec.yaml | 7 +- 19 files changed, 901 insertions(+), 201 deletions(-) rename {fonts => assets/fonts}/custom.ttf (100%) create mode 100644 assets/images/avatar.jpg create mode 100644 lib/layout/drawer.dart create mode 100644 lib/layout/menu.dart create mode 100644 lib/pages/blog_detail_page.dart create mode 100644 lib/pages/blog_list_page.dart create mode 100644 lib/pages/category_page.dart create mode 100644 lib/widget/common.dart create mode 100644 lib/widget/easy_refresh.dart diff --git a/fonts/custom.ttf b/assets/fonts/custom.ttf similarity index 100% rename from fonts/custom.ttf rename to assets/fonts/custom.ttf diff --git a/assets/images/avatar.jpg b/assets/images/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f3104854761f14a5abd15321f8797070f666809 GIT binary patch literal 128945 zcmb@t2T&8?*EhN;gb)IR5Fk`T51~kC7E}^?6GJFcl}gE4_^UnLto$t<_J9E!7yU%Z)^Xxficb}czQ}*BFzXbqgq-UrH zfIt8MI%>ebMKH-wTl+GFdO^?7MEAcKU?t#)z$gIl@eK;3>TBVwZESJ>8T)T?a=GgN z-}wK~AIaUF_>Xh|7*+T`@c-Y2*j(MNx*SdVezXMz9w|RE*7XQuJpLEH@gMB`zi`}t zaG(WM`)E$y5ypG`Z`k>N!`FlSgO29({%5|6f8c-c>=Cx`@eclvuK&<~EJnKdTACmA z)<>H#a222e`heCE{{NN!=X&}T0Kmx|0Dv(6XUsVZ0G>nv0CxI+#w7Cqfa@**G{5tA z3UvA}W1vTSu)8||{3rzg4jTaA83F)=-G3YUKga&hz4(7P*ON!b2p^rN-%;}bya6`= z2N(jrfD52_gp>g#fC#Anx7`1G|8EA+1`w>Qa8?)s4u`WN5bT^-6ekAWZQyS;aos&}3G1NX|aN_JajsFM%A=ueDIXHz;C}9n} zI9}ubGyQ7^xZ#lYqXrTOz}z4RH|Sp%AarzZ4>|oK|x?B z1O@|xK@fl)1m*@HXfYy`%p-2*#G)L4kqA%9{|?it?->3_-I7#s=G6{VHIGPUE#Q-~ zXy`l=B6uYIzv#ae9IYhqe>5EN#JP_&LjdsqX2KDV`$#^TN11FU9{z6{Kte!A=0dmu zO<)byW{zFpS|wsgVb`@`;skz01tpxpPsB}a^}fv7f_>1cXR=Bf%C z3ojfj3txSQViV#fwXCIT5;1S(MRndiqpA`e3*gzlh<7-)gKkiBKU-wtbNpMMm-8^z zU^q0HwMiK9O8$aBP3+jUy8=+}F|%{CLw?-VHF7hF?IY3P&&f09(?!XKxT}k0$8KQg zu7<^WeP(RPQkN#BHaB+ZrR1}BoMZSHj}?YBmAEaE4JCEAjKWbKmyI~M!UtlkGdH<) z_$<8*RVpr@mgEt?LxA^B6}p~z2w%;nnAi#0jI(IKakV(JUYC=!%)GcRx)I>&l@BKi zLH+Eh`BAUWv~&L&5?>&*Cbgv=3Fnhx>xXa06htXgO{tC%_@YWBw{Rda)UsK060u00 zDii+YWOP3)=XMYT;$KfuqTV@8SyoDCs#PSk^Xr*IuTqpO+leVFj0hbl_~JyNR)0-t zY{^p}Yut3RQ>;ig1t#OMD$SwLL@03mfiG}#SH1i?oQN6tBwn3=I@0#Y0)&N}Fze~n z`)KUG8cq%@sF^=~m?b#VBm zSq$Exm-%#@<%)MVnJ3R@41as%z`^$w*`ev4EwYZRL#5nyI0n}9o}t)t5-Z2ID- zPN=ztt1!(le3Npj#ex^^T*xH`Mbh8zSLmRH;W;UyW8c5dI>UA>W3jhntDD*-Gu0gV zmbsb3l7F?btUoj+()rEPcJqCThq&e09`#3!2ftn{xAL2)D4Om5ezJ8kSN3t+#BG0U z0;>zz*S=+_pHG$%u{zB%x&M5yjQ%))OaOLrvH`iOas^?8_ie}7&oSG@;-H>4?9=gB z6(*KWO!`HErsa_H?y5#OKDhi3P#tO{H$&=@3UxHo=BGTxuUAlCuPP!V><-2ns$wc^ z1CmdeX{JvNJM?a96bMYIe!(SlQ65~|$|78UG0y8NbWyqG-rsYLPM1ceL;CLBDFz&) zAdxXR-+Z6}Y|P1l9|&6E)VvOac5?@6)oJ7sECJ~s5eDS>N1APYjruZQ3<9m70#vn~ zQp!+6mK>N=WMI|eQ=*vi;=J03?IMg)(GP2tjQ`t6SNnp`Kx&JOwz&iYjwFdMmX?_= z5IrE#w*Kaat0EXK$rE>an^>eXT8U zXIZG|AF#WSXin}RCN3R|Kh8M+$yghwYACc*Zcz7p5)S&h^W1vaHnIIt$yPm+O0 zBO4rxCT*AdKgElRJd5Obi}@*cMFQF_t{Ll-Q=c}8(H1o|VoT63^@2074FloQrWMA} zS%+7bYAue|M-m!%@*h6Y`P4oyL;=st`rbZiJ^U#tp z$Q$0%uS$qQ>4pCkq<~x=p!L=czxX%AQg7sGx6L>DDBaXH3Bd5E$nZvW!4K|?8zd{! zxVt$ds@q5BHSff0`JnBSWdijv^raJ$gG9Y4F_goH*v^D4ecTXZ;g77MaCV0|NR4R0 zYfbI`-JXxAZWWqeo0^#F+WI20W;60p?*1Dk;B}=cybHh%yCFHXZ#TYWG7lKpVkaY2 zNQg(sD2dyRm4x<)o6ifP9hH#PXX8&sC$sg0=4H^Y;IlX-w#vTzgx^zme0J&YIy#7L zG0dVleq9KmWx$YKdTwOy{K*}ZCPo5+lm5#%l-Xv-DvL3gM8GM|SdTv|^ zJCJ*x-JRe4dPg2UKhO<@y^~!9W3T51#%muEsl@Xm%z>}YJ}=(Ymutm_BRO~RLhOMb zq8+n#7PBm&a>&4nEju?zee^VwOEsds6bJl>*JXKfdS9n!O_vQ}sO(N4evi;NgZK30 z;Wda7o{<+zH}U0Q37B5H;!TdwG?HDY&R=~*gq>>?0h)Q}b_#+R@D)DRmpkQh0UQI1 z$lJVL_!Byfw8X)(wN7hlbf6L<>DOCGgLs^+wNg0bxd{d?>WBR9`IEZUWJPRaX0gb) zb`2rPYtu8J)iVj69L?&(>}X}CN4N=UdEHirHk?I1V{ps}2&8G{XIU?5J~u?3kgyYv zb6lb0R*WZqc0(}T*ag=FmnQa#RR=KoqHy7Mk(p%pqQNEi_-E5|?^L49aoHo;%2#~5 zUqQRd1XU$xABUr)HLLyxanEt8{MaO@6y%-yKrB~9uhc3zpHboy_qeJCXc?6!M~3be z#(~5i9xt>UVh#CM<1fF$zMlKs>x(Rb`W0e<_Y0%G%I9_Z$6lQ&RMcj1( zgeJ`nlY}F>@{etei?yiCF58}K>{e)1khwX;BNyvqk!;jUOJ+S{iZCc9|mg9fd`H%x>dD@V}{5{=+URl`JEdt))(=PU_v zCT89Rrjek0k~@@M?2sF^Asip@{g5lg(0XC3thjc2bCPitAB zM}W#@Iy*Uac%<)Z`vj4*?|#s8H28p~aU~@QaAiv{RBqr|Ho89N($uZS0|72CbDDa1 zv`|)_J3;u~*#%x}UcNWTX6svC8hlN$-X`xv)*P9{n;Ge|6s4F5vG9Zt3>1K)^l1eg zPp{MAH)nR{(1MHQFsw+}1nDGiO!Vq`q&AC_{~NmWBeZ@d+nFR|#zSt+)MQ;~clzJc z{yOJT4zbqV^l+FL3}pIjZp|GKw}^b#L_@K;4S*1x`sHUHb*5Rn4%}SD8Eop-yE@^R z9v%z``jrTI4n*-6z1;b*EnOB01K$}ZtX#^@(-EJX)0AfVFk#^Sc{`<$PRW|p9gKy?c zu%2EE1kCvoLFim+iS4_7u5sb?3>>H&O{VCG%52&~j$*+*7(XH!f zFTg$cna(3cd}%Hcee{Snu-jO{PM~C8VW?IMT|`OHWOmfG05P3+Y8Wa<59Q{%B-(()q_9wJ@ z33KSh2hYdt*V#@8cg!M+Ymj>4LJ|4__Alj{PrE#yxP!KTW)w89`}Ly5xno-rquYDz zbJw1A>0}-3)gW?6#wVyWn-8~pwkpp5zO53p zUmIJ^Ilg*OyJ-C6z}q`cAg*3x&h_z@hh5nohGYNX^_oXXJqnkXrZi(Ls`eYz)-+1L z3viDsvM`A_EA~4)^<&m9UJLwu(3C>ks-3yBZz4t_7e7jh$~6vNd?YV#AIMj<--+cA z{=1m^GPPM;$WGYoiGKykUO%rGA*j#&-0c3z$Zuma^vQ3xXrvw~$uM&{b)*g&$yWZr z1zVOY=imxI2fr!FAHkvUwEruq0eB~nz+!v1AoY#?<^(gUJG`a;urr>bT2Ltw$aQiI z`NX(1wte+Pn`Z{x(Am90bKo=X^?D<2$x#kn^qn-R#xm4A`P5z-msJ3AV$J>Vva`Td zAhj`i1A_()MFbopPUQ`dCdwLj03r&V}uQ+Du#!X6rUA~YBPJy-UwkcZao#^*(Xa7-h4kHJPu!F@J&t}qrLoC-HHzhs${nXQG5VCOFE z2Kc^-wNxxipq%2m?R?N1udUk1;>Mh>(|i;EE=7otK&`8q&y}vHJHK$BFO$`EzhFJHNakIj4&2pmvIK${4Yc>&=Pe5P!&Zl6o$Lr^X? zG3IBaOweBsXW_#S6ZAOc=)l6T4Re%t9hb5Wnn0%Vb}<;|zDD74b%t2HGqZ58gcC2e z^J>VFDYL_#-(Pvzdi$18&+LTyXPCgL>wg$wj3+`KBG=~R z3RJ`ai?p|Q*gpNNC^5X(?6a0Ckd0G&dXd-HGiF?owc9=$B*CC5_4jiUO#Uhzy(nhi zUfPU(f#9Ccx#o0_ruu}aSlNK0CAHz+JzxX@zC6uyeEh;b84d-N_!uMEobWW#JY0U6 zdzyvJca>^^b-rUH^Cmf-^VLXXGv7CqWF-6kde$g?gbhuT)1VN?7+0=~3x`Y0r=ooL zpuJ}VMM(&6MeFW#FvL#LklE2XgxNH|1YWR*yzpG=s^ zJ}3U*uHRO%CE*^oiVdGEtD~rU_)p>R9-Z?*7OzhPoY(DHQsNv34|IqS&ZDA=g*CV5 z>dLB#RRgb0UCL^eIW)?FEXpP$(t7C?fid^xb7PHedLm?S~!ODD{Gv)SO< zm08k6M)ahpVo%13YE{+XJm@dhzqF;I9gca3YVIaM?vXi2`Mt9Y%Hs5K{yW z@hb|2t%utz0M(K=T*}@sd_M9<89hRW3Db(zvviu=<;64<+)avI`aLAuMbwk*_^}_h zSAxV=l>Mct{2Ei7OqR*14W!9GPN{RZ5FO8B3%l0;)HT25*vn$}I0c*UojgL1E@{5C zcI7%brR+@C_ny$HNcnwO#(B!YTpUdC=afv$c#a2wFO;Yb8p}uKOU%>Dc)W=@Uxz{{ zliy4z>vDce3f#l*VX~171snk>^d=Uz=oWunYdR1Z~wNijIfJ)Az=hu z$grSTP=mVA(DN$py^siJokXK>j!9IZ=n2a*^!gGX+KZLNq2aRW_RUk21?P~}G_7)Z z*gYqc=n0b!lXwB%Vuf)|9hAn;3x4v*mZ-eWYy3LhNQc>v5@=jEs@G@EdtqNsB||d` z>Ux6MRYejyyz_GH{EbJgZN3l%4vFlG@Fy{_v+qUP*)yJ1n;(86xE1~FR0@RsdCHUbMYFit$Z?Kr|&BNUIWrmqp`D6tx0(o zRg<%fUtG$CUR0_5RrV$HO9pEIBg_i?O)J{7EAud<_MF|N=eBn$FIPMdo}3HekcL$} z-Md`za&dOQtDUF{I#Dxj~BBn~f`_i3^e7aJ6%dB{`-- z^4E>5QzXX@%wdwgl_a*pG*Qp;F;I~FBQwYsEkh8tH&;Ac4Mu2eaOio~+@_g2 z6>EK9xqD75_$IoR!y9G2S92qj_pH; zNYE@w1F=7V9?^Jz<=554< z(4)}$+z@@m4Bq8H;C*?)XUlIaz^=si-0fEOl0|1Xea*X6=7#T2SUM68F|$Q#!@3$> z24B2fjlRV9y4U917)!Umwy9AUI&8R&ZY^fQ)U$|-?|5iSvmAwB3?$Pf^es5LCGQDk zW+#-4ceMyj{vHR}Gt1z}qDWO^W~(YU3jZjH@g&D?zzgu19Yvp1nNG{oQ-7U{+1)Gd z|Ee7lku_Ax;u`&F%uEhpp~};d-zgV;JcU;i-=77@#jk9s%}m5au(_W*C}IhBgbt9) z#2=)0B2i+3D)qWCl1iueguwUhJ0jXuI<_N%_s1gc-hU7L=!J~#>H?g5fRpEolA<|( zkqK=9p`+kNBeNAR!S`WvjPm1FA<8ZLgi2m9)_Y zW%j-jw=o%fI^?G9?<#GJNf`4z|J2*@+4VehQ3O{eL=_@|(piRjuV+5+^+|2ESZXtF zC|~_~Jcer|yk5OS>w4;WRXb-NwPvnfRX%GveP zsg8W}RF9-DdTS35=y`b|#tDwf_|^Uy!-d~N$X<8sQi{KZdFxCa!I?$sYxSb;t80Sd zGJErhS#bBpmRTPjQdR$+VjXvSbXl^5PULxLmNn}at-zbg0$%zP;l|%AOC8AtBSpfb zUJI=%14T#mfdGmur5%0nBO88OOTvS}aOI8@Jyjn2*5-ZR-M^|x3D*cSc;1baxR zRGK$y-_!+@rML#_+gzgcyNGAkpL*M1U!ROmyglw}`VMM!TF&Vs=wp`NH_v;ir~pT3 zk92aNj*01A3#AMzDhv|ys%a$v#9|H?(CA2ZnU?e_CBoTzwzta!{h9L-Oyg_dXp z=?}c%(8H@teQn{b6DgSIBGF%rY|JdvE>rX=i#%O?lVl0)`1bte91DvHdL*Qu9u1;{ z*;3Tl{SG6D?F8k8JL^b{bR^kLr&GM5->dluM;SOn5gb5GD(%YSMk8g!|on zJ=YFec1lN*$YSj0KL1mx@&ecE$&(Hd1A#E-sCMmJlP>dC_xF2G@)EhNM95dW0;9=i zDBks96|PC#zYk@zR*FdRjPx1nP{YYhOP$k6pZ+?s?G{^^Jk)l^!yMTxa9tty)=Y{c znXgP7b2$iJ zv3}rWD3)qo-dSgVWZhlLjmj<*zu)WV7vgH~YdIKMa^y^txIHf{14rR!S6bK7jx77gF#ig^hWQjzvRW#_0XB; zZcD)laaWqu28-W5_EEhsINziXK6P+0#eMMo(@QmIjoTJuTs)+l_m66I9;zKrR(BlA z(pU`79O8Yjyf~*QM03 zMkg(GMyc7ywITylIWIL{$5>ppb-MobYwdIFxRr@z^W?#8=j3`1Tm8%T z#gKs{=UZ}Pcerla2Ybz(?cng!Ub{r3n^%N6xXq`34?8dNV9nwC;5%PCwKvBMZ@|KI zl>qV>sABQvv89Pk-O8^ONWf6|qUV|BbZa!}bgeJ{{;BfX zUmxY=6`1a7FbJEAjokeF+9S=Mv_WG3fRz?iIMZNwbJMil(J~nu_75;J=!&tb#0oXP zs$`q;F3SwMV96ue$Rqv(ibir?SRrS9y(<}6Hp$3Sb&~XMkqq;V(Zb$!OKS1m5#|nI zM2Um47OUkGh7*Rs!PF*rE4QS4SGRx(=EQ(W?1q7@LWD7FAz9+qS^_S4)hHIYozQHa zBTsyD&BDZe;gt`x$M1t?8elP(j0euCR6apK2_u!^&DxB72CUY0U3vmjCdfL_3A$$=w^v^(y9_3 z{93u#x@^-Vk4dRt45#S6xhy*`8G0ZHXM3{f%3hk5x1Psm(+<~{?AR@dc5PupfHuES zmsq=aal1~_(e->&#SaG91e3@@{T{gMI@RwH0Nw;t!EZQT@3(sC)pOuAOgCBuY?#sp zkBSw?D(CdB-jAWa@dSE^`uFh%?D%*80o7lYx;${sG+}EsigVSR@E{J>~Bj zB2~`YUJ9hdRT~;0<9632f9>5tG55-p^jSPO`XWT}M)nQ2w)Uv>GrPORj)HFjG~aAs zq|)-c=!MUA^Zba{n@6g8`opOC?plFv5_*LO;=GS|3a7I_GObApy}2~*;f*PIvt0dC zG;>u~({{X?Q9e`H^kvqCkkS^Yi)6iEm-#*J81=h-dwD}-sw3#9h1>7wO9r$l2G?qH z=N)c~vz_y(i-_KOm@IEiJvH3=U1;JJe&;9Jc67bZO+8W3UGJQ96{RjC1CS=+v!k_8 z{3#CJv*ngkIb>;QN5W72E<#ruU+bW8w?{aUGQf(~IS4hAM%lL9c8IiGt%6enV=IqG z81xmrgN&4tUc*%iAMfNXe6EUJ9=aLn4RAT_9K{ozIJ;Ro;Zq0Z`LUOg@-7r}sK{`zyd+sEiPHhBS-xL71E(H2Ij9+iAy zQurj4Uu@jQ=i!US7ecmlWb~{)I4ksSD*{zpbU-1ebF&wAY-p`Cwdm1tA21qi~4}c(lOAHm&ICV-sP5Hu%YW)7VI*n z)+>pk8KPn0Ud}2-AQQsTIbp zwB1oX08B<6M1XeYAoql%XE{N|iX53g4Y)DuWL-kY-$sF{N1tZF`YR;q>DF0+NL35` zro3W4T@4@AHM<<2{+WJ*?Lyy=RvmZgW1Q{mpwiIol55TTyeI2c>55Y0o%=SN@#4VlxPXD&Th-&y z(L((O+&gL*m01>ZDT%O{0y7iN2AuaTPuGg$87pVkQVAtqOr0O@YGyTbc#!*hUp(?t zP|rkvZeXX+iePIWWWW z;Rm^b6L#Qc{=Qa(a)%hHx@CidVb(4wW)BbP3a52w~j^#&jz6Gu} z`f!6xJN`Do?M;o&%t%L6D5JVyG|6mM_N$#rn2v`P_n+i&G@y-@Btc3t2fkJI^hxM< ziILVn7aVp?Ys)jbZh$CZS>YGTvaDeuk0-PyE)IX_jgyr=8O(I+=KiubhKGSy!pPB)#YM=_-* zIE6!sXg$0Fa5Sb)Vm}_!y6Av^x0l2t%+Sh+ob0{TvX@K*ezLpdjS&b`e zka;!=6P1{G;}u2?_ZNEteRq|7SE+Xmy4h0jy(8ia{_wY%bIF=xo5ew28B3?4t@=ao zDJzk(g(~{5qAt#}?yocJF`SHfr!C@Uzcy$~rhym&-%MhIaBC2NN(SEfdpaNw-dZ z_3V6{6eH}-WlP!cMvvZQ6aBN!0ye&4Zi1m3jO!-K$^J-DeeW0zznuyZZs=TArBR+> z_ZQkej~xqge7$=IVRznVV|GmSb(t{TUirHLtVB+!N(cK#_C{Gzf__NlXkm*ay;4m{ zfriZ@s!*OBMHy?$OT4AwX-VZVd6$uVzP$Fx>s?gB5_?8=@J_x2K%M+?_}Fy8)LH;Q zduZ?Ci?#jRBI@pBj+fo6&g$w*ESB|fH9uvvj_31V^9e`l{|uOpG0SQd41hQ%oPrc^ z9g9+UoWyeM*1hUu%7ZpmC(GdPus8rYWFFPiCiN1*{uBF&fooWX|HyuZuuukgZjOK4 zgjqEf@aI@w>r~+)vNF!uxDCAXDnJ=neLr8{H#?+mwHOzP?RRaDdH+Sf%W)Br)FrxY zmcS)xfWvN*D$Fb`fI4yMOze$>Te^~!5^ucK%a^1$pBJ3{%<{(6*H-*9(0h6@zOjvW zBRRO6^lRTPV)Wdjmb_Nz3FRCLxJKMHYmvq#8(aRy ze35^HOzv_ZutY}C#rq)<6?Cr9J1UspO-y&@w7nsy;gRjBXYeGEFC<#wLrh3Rr0~|C z3R!}b`iH}NUdio&$Zw2j30vF{yI)F#f#4)&a(1Ybiv7H&nm+zmvP<_Q2_UdJBYn$| z3iWc5h8xevEa`9?(UR=hI_Wh*Zb*}E7tJ7if2D1`A?LuI$lUp!R9QEGuZ?bv!n15+mmlo4eGDbqyvVO1g zf-MCMWSn*RIyZ(rUu&t`O(gl)_bP_PjEm>mkR^67`AH95(9e+V`~)_7zB+Ib%t!5a{{wRvob$%UQ7~sq_1e7ptXMTuqZqlQ@s}BHu-xvhq)) zPu<>Td306Js5d@OG?o7WH~wy)tQoHY=Q%_Ki&qaYTZ+n-f(k$+$t-cNdhZ!(pb|3C zE64I9#E*x-7AtIdGR@P9Cc~)rktz!8|1p2wZ|x7QxSQjyR``dBvbf^vhxdfCDjsyo z!A7jmSr*N+*!tvpkI^I~N)-^f%;;BlUr58K&4K5(zw z?%94{E<3YZbFa&<{_&{&>2&u;qrcy?#XUQCpWz<-ZL|iejg`r+i-BA<6j@t+mhool zjLvGQmjpxmE$Ay=L}YAJ3p^*BEf1fyq<_1mEA5n-v|Y%0%)z1*28W7{rFIv`?5Wmh zF^}9)BBe=A$8d}qBW>~a^m{Jmqfl!_gNtnS~M@k&igyF#^qh9ze3 zhGhfy>C;s^wZ#`nIm3<@b@V4HGG#n$Cri!O1HTgrW=dqjxOa+ax#LBPZaQ@g+f*1? zFmFsbZ>Hj{Krt~j;g%O=r*gvKLd2o_=Bv|9-m#6hoi6Rp{R5h&n#Lx7N)%OHd_$fK zd-O5kWzR3$pqYye2YZ)x*2gopmges5%v-Z$RrlFOZVLE!$B95pE-442$(iLV$eIGK zrqHF=RUtL`j{Mw0LIn;CdWpo7nkaQsVWzY|39Z02QW{8KtR=Oi(0IHBVlhu}W!@y` z>w={b3{=WsNrYxBXbj8&p6~EwrA#iK{j`S}=%vSEQ%7$}7xE${6JIm_0Ys1^TxFW} zke!~|3@BNk!z^srnll#(c;=-GApI2zpE--0OSV6Xo*K`JOZnxSx|DQ@Hs`@Nu~J_m zD4L3KLDzY{3QsG5UXD^K0Uef!zb%-TP*L$ts-{_1u=FAH(~7<&O-|i(2)f_}=8-%u zT`&v0%7L_Qw4nwE6mme_TDm13j)+HFn$zJ54i~s%+{C)*te%y})Y`0J$~UA_ZS>+m z5H5WD&wqf0jZ?z3{#8<)$eB)poqUlU#gJXv^d-UDQ1o^5C97a9((w$ zh36HrkC3-_3k)0kDTW%Ni*%>FDU*1FxD`Loiyhwk5cP$DVP)K%-ea9HRHJ&Ty1Gn~ zNx^Zuv?$5J{c)ftS@QF-V#Np%S|XfuPGKQS6&b+ut3E zZS@2zKy#;D@2RXpzO&9J0|0BXmkVetu>C5Diu``fYd}l2CG;< z>VKR1#8pIre)XHq1AlBBqFQ8T-y~(aKnK^^(>o9bxz|abd=^0hS4ovPv|fYIq31)C zMTx?yyvLVrJ_T%YOMSLn0MU&dDhMp|DVEi%L&S;d%>-#=Ozse5mb%%mxq)&qnFmc-?ToKsaJ^u8J2F;-Xd93eT8bsnV&p z*4$csOy0L>-+%5Ypp6swY|rt_LhB;hDO@;r>~3ANSh@$p-zLT_(X4`oTrtXw#Z-)7 znhQtn%W5zB3B%D|-*M_2aj#}&hPDoTW8TOjtU0;`anV`L!Vn)-L-PwDnwA7TON%-iuj?MBb8-Na zdF=8*o|G@@1r| zvUL*GdJYXjGhTN0W9YCaMp20-%kpW0+oi~<7@$0!xG?S>Uq_U0_sq*G!b-+H z88AZ$j8}j0(0?x5opc#1*&$sJ+ef`7ML!mA9ImKx_oz@&`G@AsQS<@{ci=aY*57td z-U=KokyXHW^Ho^;W_#`qM_orvh*9kt_+Bc%)hS?_f$!k$Lg(>G%tVsNQZCvp2L}{X z7dVL47v@-w9gLR%$V^g>U@w{-W)mwfGs!%PAwU5&)J4dBP=yv|c1i1K(>@HAjrG)u3h!NLbRttMGeUNEN;>DlWy7ItN^|6cv zTN&GF4D_LA6IyRwsxl*%Z|rH9)!@C48EvIDPzah!O=0P(;M>vd+S?!5f_cmv2wk5y z9h?=?S}s1czS!{j9}wf`F`)!frp|`gq<}gf4hcp zljq~aDEDaoEEK{gm8bd(qNg7iwC*{Wz-XqX4)5wEVd;JNN6(`QV>~(XU;W5$%`Q z4%h!=wHWOmzkGOn>r(dUyqkhg2=J{%C%(te_IKJF^>5$|{{EmV{fF0oDfV1Wo6it3 z71BCYZSwN{nWle0;sY;fuWQw}u6MTOM*p6EdLJXBox~gWoAZX+$faldP64~nv20dL z>E;z`(bu8uv>Uk9=ltKBDy!c^qyX@VlJStiD`R&!Z<-f1q#s-=ww)XEd-_z=O!>Nl z(w6--)1Jpr*`CbP@5Q6u_#&Ngu}qrb)BGUiS;>DuHnjj}67V*x{(0hqj7FeR-TYIa z{-^U`n3BohTC~%9$BG!9ff2hdJ4E|Yq^`O_xvNz9y7pUKbrZ~WGdtSa4wpt?JNUbr zrLc(oBz;4by8#(!9l291zL@UDH_6AdE*n{S>g2N})QvLKqO#l1!HgsdOLrYs#X#B1 z@JAFCnImW%*$&KxF-!Mh@z!p(m=pD9zZf7^=OoN;k%f@b#( z560ZWF37*Yic2%}(9-^bnM8fH5JGp?uoxoCW=}PaBcC?o*eaPMx`VRSVy}2AGm$gc zq3%4zDly=d7{j-$uK4`jM@!UFYM@*Uq~ zQOP)AgL5{*<~JBNisS)!(wcUp&)CBYZ!ewszeid=17m;9~W-oLh$Pg^) z8!H^MJjQ9A{6(cuXJI+s)9o4;QFp6_xDX$qF_OWyg4^297Sq$mUsmAcJJw}&43ECu zI5D+}SBUxPH=TM;?h~_)by+r5T=7|-c0_+!KYK)J>l~YTtITIS>u3h42ZnNw6z#1ZI^+adEH%7v|)Hd+-9OtkHy#602@QcH(-~~Uc3M+QqcC) zZr=LGK<$QWnu0f4-qOPRx^!vgh`(A|DII6bTcjGgt}SK@#5Q~$ux@`}YY5HRGnUF_YCrV zm-1{_;MFJra31&CQT~>h+jA3fwXWUu0uE%^?~uvjpf9rSe>&}&K#nh06aKY@BTjS& zagKF`pw~?lU%(HsIuc^0@DKHs2ps{_UnZYoT?#a=SXy^UN;1#Vex>*Q1YdyBP8(t)T)7C8t{66#V-^N^;C(7C|ZzCX7uhq~0 z?2V;E^V!Z(i0|Sf`7TRRvm@|)LN+s9n<)edw!!;6hN%qbKQlA?NSJZFAniG>%pFjF zw1h_%!L1>_$|CnvZEiXOtEY;A3bgtp^Tlc@HM8L|a=nP}{fbe)c41A-*umdD9m9PS zz~#?S#uI-Soh>VOoXW0&2I1Nxjf%B}4WykT6A!~ruuDGjv%O|x2^P?6FB{Ieufpbd zF_S?7&$!F|1EyteKeLEiCgOOY9Okw^Ck+Aq2xbsWc|rP)iGqCo+zA*6qhoLEy#Q-N9PMZjhXnyx__6?>T+ieKgM0B#|*lg z@5y;imK3JTg6B0ev!JWrZtQx@M(awdh>Em%oAx-Tz06}sZHG;A%V`8{L?$=`CWi4-=_T&wy5J#rt2AF7dsXu&EO1^Y z<;5&wH$9XyeTri@%!w{6W#>Mr!?VL^x$?#OjpB0^5E7v0aTOaD&k25dZ)%{TRc!Q7 zhe4#6RqMjbF1* z@7vPH0abNw%O|}i&dvVJNz6Z#DSke(9rL759=7nFJjSk^*LQliYVL&9@$KELXZ@eC zv5So-8!pXDm94qw^Q|YUOlsDbSQ+0glwp-x&%RJnIWADCN*nCfoUlezzFZBKNm-S`o z$fO%oLq6_P*_fl}9+U{+ja^mnpPqAnx^jaF0(+q;^sNDkqP*c$*Y0+<8$fI>YK#CR zVwVo6t*_@^`w)_3K3HOzY^+zS4G)NWFIa&0psqBNakuO`}p37uqGmonCq&J_JRPW(-wv zHS}cI6HIp|@LBI(F>L?6PTz*!OyT@1cavcw2TKNchI?JsCuLDdTnAg)$kC~T>gf9r z%GdY(+Z7bYY4JQxezfbzoKc`PgmTQ z=5v?q^{M5jxMhaSuDz4;MI(tj1-?YbgDjPbi%@&#A~uHDyzSJ7LmEb1A4Vu*vpuRZbCI59$QNdEhAEZknFX7* z!hovpiibl7D#kwjM)iKOeJ&HRP?}=&I&JokWZ&^^ccbM=-Eq80#OWLW|4*3!!A ztmkXI$Jyg^)Pz-+N_I{aIaE8sM0K`$$z= zj}N;vIGQuu3s8-iCv*M05Q@jdLP%ZN<%M$eJ_H$RnV#8fqZF=$7kGAoZBF5yAOhT% z$9AzrfYckQ@}~^v>UOHm?783rw)@NNCZwIbY}6e=M*q=|TufT8xIy^a^P0gM+@xYR zdq2H%jRSOJlr;+^NC@x4vuS2a;TRz2gh3k|D#Sxyo!^A%sd5I$p#e(xpK*tvB^tM6VI7Hp0U7! zi^7|DRK5{TF$eP>hC>8B*n;FG@||Fw=(HH5EnDw54Rg3c^h(%BT!w%H1e}=j!igUg z5hhpwo)?Qs|GxmmKsvty2c;W~mo0^2q^~eHG^CXvkv{Zp+XmwVPdSb_qN1{knGj-N z$27rMT5MgQ6S8|B-|0XT<2VRFHva%$T8Kkg2IPpgz=7O;{{XE6ZJ4NVC1fXhM||%A zl0uEmEthq?Zd)i;>f;BI6xRW{aabzJ8^?78gpe@|BU&D`q06V6S!mQhQ!MvSEQMvhkv0lTcMsp+xUuvq-sxsS6gb`f@0Ym{6 z#@DwQ$bbRG8kH-XRVq}eL`sz^P=YAX6l+mZrAn1VsZyl`sZy4Ks!#@v0+pJo;z5!4 z)wLW-(0MQ%a~if!H!anv{AUn{$9>@ikCzM?oa_o9MiYP?7BkMQ{&Gj$y| zO)Pdu92)73cw>g* zc1-^ON)AsmjSs?OH zf6!1tBm~FGJt_!c#5DJ)1}8QI0osf!?Pp?W6>o$Bk;5*t#u4DzS}zvp6qh#)DI1ZP)mY_-4npkr z?NN%A!r@{+r7I=H02p-#UbF|!6@ubq$v=fbZsP>VkGo<(o<#u3w|RhLUFznv((I7F zPz;%gprLLdxD`ti1V?c+#mbT55^@py{U}{;DRv?QMuZw?Q<5tAR7cEtkssQC00Dy_ zb`*RzWMZ+t)i7W@><_r8hGGelD4=sKBNGTTex{XH+02(CU>FC#H5fOIwFG>zKA-ni z2ZtcEPVu5D0Tq}l6Fu0`hX{P}m!YOWmkZ>X5)1*VQ~|9>I1n@r=ow+H^XBz5B|_XL zLn43(puzMCf&$K|wTrs1nXpzKnxF-EjfSE^s(6`tl071#>F_2o)kF>Ak|68-e|iax zw%NE}K5@{fwyq-(*yu^B%Qgby;|#}9#PBJU99jepB$@|he*}XgeW=03qj0_G!6A?~ zq;vGD#%iUC{YdU8hqex;H|yGg3K+4tIM5X`Ng1Oyzn8TjP;IDS28kZD4jrw#BtU>c zG{qX>)J$$EUl&u7mM}OmP__fgt!?x+W_YPo6vfXCn;9qcG{KnK0h=sj2_3gU+zQ5W zW{Czkpczi!jd!R7WT3UMtPgKWb(Fe@dnB>e%`YrwVx~Z`&mS$YNu&Z3JYL(G8X(7d zcML!f$OeScI9xJfWN1OFL12VT>r#EILchH#1F$&puG9yT*h13EeR-qeTm?e`C3*Cy zR2Ik)&lN;PnUGkMvFSu;Xcd4tKJ_9Qz$_RveMe(afbkmGLem)Tfq?TDB=Lzy+!n!!^8$T1qvb4@CzIxqb*cy++aYCEQl@>#G@~nS8rw8~@g1p%TPy{zUnKcPncjkR0G5Z%68lXjd*{G z_=DniGBX5r_7(1x%M5L}AO6hOiTJ;YpA+g9{AOBaB6VJUxcGX$J>#CwqCHI2WXPsq zX=B#B8GC!@kyS3pqn037(f)lv03O{l!=rB6Ex8K}MO`AK0z`_DTtBZ$QK3eHRH;&eRH;&cij@UQpwy{Sv?WTF zC;>Di(TS)9024GtM|8Hb#1E;eAFb)_m^WARs&%3$5vr{^i%%bTpnYlD;++FE6Qngq zR)+6MaUcBrlKSCP>8 zQVyT4>ulTweA27!{{U6jkio87B$3$F1EtHUUZC58Ef{RMkss2pNE=}wa|XSb`h4vC z)2V6CEN5NKZn;(6JH3&O*kRa;+ivnQNF+4s zx$C6L;K7XfM(QKF+095hF+W-kgB5FX)0D+UxL?FmZClDtQA)%VAa7GN&I;RHCLj%c zXaq1Au-~OZ0uWb6ier;WGb#pKx?m(l1WSmekgT+veLs4jOCSL>4)!UE+(k>) zh{W?CZ*)3~j~OV*j1nS&g5O}JQA(ZdyHYk65D;O*!5)LPBm{@F50*6~#XbP+`AC8L z{OXBt7|_t>rNsv1sQCy7eA8rBL2-#bl*@rHqD;r{@HItYg4~8vj)@1i?kd-ZGFXV5 zN$*t?^Mfon=by%kt9W4r(3tEg^{5o6f@MfNg49{iu#{yj!Ci`bWjr{!mPTd`NPi7i zBjw_I&?z7^5jv6=npG;zDlPy=2envODUe1-K*Urc@Fv-Hleit|Ar83DnMl<3s#kc}XQlCw@%M6ny$plz|Zh$Ya1N$w2N!xE-78}_3)25>=O0-Sv+6+RnW zR@V#r{3;0zaCl&R<|opj@xxrm`4R9R=k=&TR5E@hxD{H70goh2SOlx70!%>WXcT5_+iZYn15~&iiOBhT3S!L6vY~N16jTyR4&;y0 zXo_6JsFUVAdsUY$Vykp9Sv!NXQsT1scLyw-M-=`Nx5#D2yxdS%I4c#9Vrkp}*8>^K zIPXXugEAHK9Z$79i-=i>3>UpsD<}v;7MaxcqlrMS$Qewj{{S@a^Wt_QmleUWCt@I) zfo-70W>1Es5WI6i518956vm5FT7#G@eC-58P;WG;0PmUv)LX={4zfY@)lUq%5;QyN zikU#658d!w#Ok6eTgAen<)Rb&)C-c_QdGpme*XX(U2g(7GahcUG!k7`QOh zw-VWhw%IgpkdvX5iUxIG4S|qmYC8GDZMV7IK;y&<&Q$sra5KdMtdMj`nSnv{z#{@a zyQXDSay&q>`O;gAvo~bVr2~;@x<72Z!|?wAREpM%DGXpwYPBI8vXD!!6q`qrh>^jd zHq0uOa6?EPsa2-q1ql}yAOYMHMVMPGMV%GEN5206wJA$}Fu19XfakRXD*#wPk*Y2s zyhYF;1Mc0Xl~y`|nI|%1UAX@AEsJTAqJbNrVP<04c=Ky9$U^l!2if{`jaIx(0FcB;>m7stst| z9zrA%KM+9v^btT(ZTY(hGap)r3o!v;)euG{N}R%+hq$Ex8?7*>UFflkYzUlG>(|TWRkSGLufJ@l1o}-;cUIZEfg-+jeLQ_SKLoHZd{3rNQ;`HseRk4?vV+i9%fE%} zkN&CCGJJ<$h&A;qW6CSfliRL%8ZoLhm#FLdUYwC~=*#{pH(0LC5$Q)E>0HG4y}O71 z0A35&mf5YVe%S&UX$89VqG)D>c}mclsypKy9(hG{_1!jvXP!YhRK`KL@rzb~wznGFapnQX>%R5uUd56>^{6mARY#=ho9DEr>q{A(aDE^BQE9J^o2q6E zN6N{u_}6$cxXBnYw!sx!{5PVwa(NeU(#hCdaLC% z@|GCNofR-^?SC7xw|*Yv31zQ~bzz5Dct1HB>#gP6iB>X#d)KJwZJSp97WRMyvjac= z*Lw2y23OR7@|yJ>8|L2(wf_JWWo)K0~Oai5AXV#g12=uLj>IKte6o~+S z{cD@blUnQoOJj3-*K+ZI`_p`HvyRL0|*Oq+)=N#DIXT6SZN z)e3f0@=X9CRe%$SJQ{B|ib|OSMwS`w;7Nne(t`n+A&gNCf+ee^T!Kdge|lLDX?AkL zXOc}8DFhfk{{UKOMY+utSzLsY&^e9vshLMsiQ-7(fkmMjcN5x~3t72s02s`i{%^*p z3@w&*L!$%;ibqXuB#EA4n@s9>(U_`d29^{ci=mi=gSCt(OYU6SgFWRC=P#=k&FZHM%SA0 zf&8Ae8t72od_oO>`BY}M){^D7D{)(K+*G1ib!!IUX7K|yT_i z6Nu-$5BE%N2^kj1MEg)5E*V=b2vQKU&|{{ZC!wE{Yo*kE_wrNv_Mgq3T6h&14)iwRZW)p%S>grtyn`cVvS zHcz1|+|(gKwTu8p{mm2t^4tXA#K@Xe4A6vzjm=du&ch9$=bB8&xn&7an}M^q@A_4j z0BpSE5~D((85BW*ARV4X0xXpzumG9*57`w165K%T6m40!;f{e(5IfYiq*_&B<_1jj zP%XeiL0&|DH42dCR6?}U-MN{SV*n0E*Zk9>n}y+}fRZ@=wSiiP%0|RMpT~5{>a!{| zAp4)(&~KrDCWt995vetxqY$AGu?M$mbYL+K34tIA1xh$oP;%}_5g>2$ro@xL1OT!O z@F4!8g0MWwd?}gp5ye@WgjKmDm(&VET_JK(C%82{VI>&jm&z4r9ndtC;(O8@ag}^n za%xe%5TBLtf}?OXOh_>Ve@ZG@B$X@*#0r?@wEzLwnv_8# zl^_ps-lJPN^3ksJMnLRxVy01WDISn%0SKUyEvqvTB#G=P306?U5D6RgGfufHvj!pJI=leSYExvD=Bdl>zyRWSptbGXK&(`q2;6Fe0Joerp=1g76tWuh zmMs7X^wlu4si8+CsdZXOF_Plv;c;Wx3!QV!}#-`v8OM?NM6bautvQ zIBseSH%UjC`U9p7c>+wZ#SYC{xPSJeJBU||e| zD*T3HidAJcnS+IF$JU!f6DQ1KoPt{FC|@iQR4Ir%k_60i`+-78a2hz{8l1AHlBCBQr?zn*kvM$R0bCH)%AYf6p3zGq#wsA^D6jzKj`=l3n|oo`%Lih)e;mcW9!4Sg#fS5=oWh~SA6s;QRC zH{M#bRt&Vs{6%9a*xng(yf;%mGulNsh9`~zte0}c!QRHZYP-K0=^DpTbErg6tS6nv zYT(=?@7Hzn^PI1#uJ%W>{ub$;<<5@aQc-Qp``5I))-8)DOy_gT4`r`2{1#*3$j$tz zuWcXi73x(jlnViey?ArJUsqi4;q{*uyzc32IJeoBOCMUxXQsb>&C$^~xZ782r(b~L zy)yLn5X##C{VMRl2mnX0tjgQVpM`a=cgDNYrO*B@<%s-EQGI&*C?eSmlK`hb?Z(m$|L+{>B8N>!NK!o8~y$@(D(;Q*VyZPUasthUM9K^XTsq}90A2OyX$W6 z22-^N>JI+&X;H(dVcbnL)Doo%j9^ct20pllDxCV(7qVTZ;`o4n$W3axS;=wS>YClQ zDmL7q30Qyr*Zia8!s@ zk7d9icO8#BRsaeT7?y*ubzKgR;cM{gcM)%wS>V?`>6W~72x;AVK0e;wSBvIo`uaTD zM-AYWZGu&(Xh;GiPR&FB2_%xnAom>6VUgCm52bw<%M}p~GACktQXo-nQ!kf7O)<=z zQRlP~6k87@uRi?I04~7%=y-6QJCJhE+=-zHfn4m(dh9Hk9=hBW#nNULgXdwk$0zo85KGg&;FsNJBC@icS zjU)|gwGvj~3H%B&w2pqzVqcVxj@Y0Y1ODsDbUqBw~GOolAKmUE{y|q#zG9 zxR6XiiiL}uF_2(>9Mk}y0G2 z6=qo}sXXhwLvS*w@Pb@lnmDY`JfJT!2LtI&Rbcsby#Y!`iEGRx+b~Gi@BPt2o^}N5 zQSU%YD*_D44M@?CT2O_ppa5;MGumjf8?qWff!?ckYm02Y%o&bA{g2jy#XM>ai?*CdKbv5X57L>yXAhhm9aU&^ zQ3_*wHD$ZaX>K5fQooI7s#RdjutUL}`cPX$*ako|`U(F4H1BjaBN7>th&`yI;;Kg@ znxd;sX@mw3B#1q|D$KGam0?bVeN6>?tOE0r$S@{>DyhLyKv@fV&?S^8fjfeEqXaJ4 zk|LQ!Ml>k zUjG1EZ<5lg851H;tp=GgL@*kx(0ojrh>7h}`NOctOg}9X|3BAf_P`lLH#Lgj}c2T3hS-V zHMI)&E+`w1(A3CTaBjGDF#wNK0-`FoK6yM(YE{z`BLkuMP!?U6wn7N`W}@xJF4KsS z&w6}a7dY_&lU0Vbbjw>Hkrj|UOLo=6+IHMXq6?*v12hKjMIoUGGQH-dvP+bXMAm`4 z3m_^3A5qN=R#>d*WKT0iPu>f0^A3F|5SWHi2B42xARuMr4Ut3uj=`OxBn7FGu9Ra-1$oy|Tb z&C86eu(}dGO+h4-z^ci45$Q;(8rv|PG(|f~mcwR8K7x(5@;D|k5F(*OfG)5oVPXv_ zNN~V;d#x7DE~ZXl*MmVt+(NR5?I)U{i(AQYAj#0E{A97_8;T>vX2%r_cq7)4RhsL% zm=Zyn&>^H95Ff49j-!g(=Qszv8G6QsVw%7znq7v9|4Hyz$|g`spLzlbY>P=|HdJ z1V9>K#{DWSv`gJXs{(GS8t-z~;Cw{9W+%a*7#@ za~h-5e-(87P0?v=I=Sq^wPQbdU7Oa??XZoJ&0xD{2+?EfT6$lJ^!-@H7zh6Vk8%5& z(8-WIgITeuddbpVGvS_f9`&|C6Id48CsQ%QNIuoHap_r6-=zlmW}21$SgJCB3C26t zq(BgAsoi9@U6|1OR z2_PEN)BHE2web6QZyX7>8HB`luPN93Kc)DmSC>j0C9+E11_M_d)SmH5=3`u`N#3Xsp^ERkovEq2H7NU3iVN7En zK=qpKh4ACHcCr5e2=oW8>aS$7H4|S$vD1#8--B!g3F%y~;ogjNZGPGS1OxeruI5tO z+3!;;$e3dzJ=H!Y5;9~n`BxI-+r4u2!XT3|?-l4XR_bhdMpo{W`huj2;&t{K&%`ez zYC&Cg-2VV->+x;5Jl{7N^y-tPw*pRFQSlU*2fm=tE>vx0N2jGSvK3Wf#i=o0arv9< zAeC%(M$Y)%3oUs9TYF~~Cl-)qpUIt-3P37%JkkIZ*(E^=*#HD+(G280!N><+jUkwE zoPa)BKQSYLk&2d!27(MS#Qk+tU1c&wbxec2k80Lg)cxX>Gr%>5&C_JF0#vSut-dQ= zMK;(+aw*nKR@ll+f-+Mb{XaoSr|!~9s{yzj{VC+AEX}Bj4yodkAPC}sw5k&t1Jaet z6DnXpSfZ$HhfI{I*gff)!vGH=h>a36nBtZTD&z<-PU(Qo(LVI9qV>X%Sg6;rpeR|I z3n>L4kEi|6AVBb*0OqFdu5Xe$m;~#A{^+ay+mogyC>13y6nP^Zcil#S`eVo8Kq8yP zgOy`WCQAEgnxRF>SeZS|J;!pGr^-MC3SIbN#FadVrnTX_CA+c~=clluka^Di9Q~QKEExs0=$Q zvM#&Q+)^#)ZPdd6w4)s#8(~ZC)DYloqK_JFLkDZx_BobuMRJp)bJW&kF zBsVFPE4(-1TB!jO0LpbMXkDgc!@#VE)!oM4gWr?)1>%V}_CA0^*vj?J90 zDU}Q+8@fk#TcL5*F1d0L)w&B5m1OQDgQoGg~paKQKM2$wPpK1OP;hQ;1ezaRd+q0Unb;l>$>^<=^E{7cC?J1i>_c zL#q(MaUqDAomCF%NtS^lw|&JjDHpB))2`yHxNx*BxH+lHe=2NMiD1qQ8Qnz}R+S-m zn2!8^nnMr(Rv}FBOa=j29kX6%Vhn$Zgr-se-!oExQ)n?HM_?*kEjIwz#5V_@*rrp9 z54s=&qBk`PvkPTY%mgyd$f%I+uX5Vl#0g!HYPVHY179{X=qQ_N6^e#EqubVyyDlYh zWhY>mq0^J%CAVe=Wq0dAlpW#=OnFRG2}_S|(F~d7HQqNt!3sb8yHQ0$1LY9P!0gg_ zg^??;#OU)*L|q0+@A^}G#X?(UosvapLvRH~1%j~iYl>GTCe_y%k&>9$6$7wv8e&K~ zpjP3!0~IPyCV;S&Fi4UN&-q2Hz&2V#qRxi5j50q3M3vc-w1?0RI4q=C zzUzO*dUm^Y)EKvQlt|(X2>jx{U(2=k{so+Iek#e={2~6z#Nxt4M|$zyMZ1F zYw1GIPAvFqY$()-+4MET{wC;cH%7PY+YHD~P&fv>a@WzyO6LCn3t1O0pn{>H=bHBn zNdtYW#(WC$bp1y}xeQ*=k`D*CuV4&~8qQ9bP7IpQ)OEjSwpiOQj|=NplU2R4=3ss` zmqsgHUtQPOV%CMAcA;7|Rs2`sekWOEU%8FDiwS{{&7efq%fAj=$%_-}A)+fi--bI| zV%M&)?5fk;&2Jo~dA4D4k2L)sS<>~4wz?F!QN}HCiJ!tndMh0>V7@)HPOA1WsUAT* z{z9&^Wx7&Lk$HiM$pMefv~>Rf3h^Dfi?>_FxBw*iU=B51u2RR6Y0JLXbzchTVr_M4 zYWXq>orbGA8~s=&$6IZ4QRTS13@W=H39(`G2R8L0YkG`8ffdTvd@- z)n>aSz^M~RT8Oz*rzw>}100%=8Av=4x*5r+T4~dY@nnA^u#O_J^?fu9I6wFzBp4l%mpG z5QqS$-lyWl&gzx=rCWD1xF>RT`cqr!{566gM*~&3sg2ccCb`_LdN9UDbwIpL9D9>i z6`~hjm6vJYx;l-WSI$3+dP}zcIcSm!8;hWJHY@2EisF28;hiU0d2TjdHJ~3$I-1

)L2qD*ZZwk3t8%r%q87@8?dLdZEe^?w&%(qqd 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Π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 queryBlogByPageApi(int currentPage, int pageSize) { } Future> queryBlogByConditionApi( - String category, - String title, - int year, + String? category, + String? title, + int? year, ) { + final Map queryParams = {}; + + if (category != null && category.isNotEmpty) { + queryParams['category'] = category; + } + if (title != null && title.isNotEmpty) { + queryParams['title'] = title; + } + if (year != null && year > 0) { + queryParams['year'] = year; + } + return HttpUtil().get>( "/blog/condition", - queryParameters: {"category": category, "title": title, "year": year}, + queryParameters: queryParams, converter: (data) => convertListResponse(data, Blog.fromJson), ); } Future queryBlogByIdApi(int id) { return HttpUtil().get( - "blog/$id/content", + "/blog/$id/content", converter: (data) => Blog.fromJson(data), ); } + +Future> queryBlogCategoryApi() { + return HttpUtil().get>( + "/blog/category", + converter: + (data) => + convertListResponse(data, BlogCategory.fromJson), + ); +} diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index f85fa85..8a96fdc 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -1,8 +1,5 @@ /// 应用信息 class AppConfig { - // 网络配置 - // http://192.168.1.3:8100 - // http://14.103.235.151:81/food-service - static const String baseApiUrl = "https://cxx0822.iepose.cn/blog-api"; - // static const String baseApiUrl = "http://172.29.101.108:8100"; + // static const String baseApiUrl = "https://cxx0822.iepose.cn/blog-api"; + static const String baseApiUrl = "http://192.168.1.4:8082"; } \ No newline at end of file diff --git a/lib/layout/drawer.dart b/lib/layout/drawer.dart new file mode 100644 index 0000000..0b3cce7 --- /dev/null +++ b/lib/layout/drawer.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; + +import 'menu.dart'; + +Widget buildDrawerHeader(BuildContext context) { + final colors = Theme.of(context).colorScheme; + return Container( + width: double.infinity, + height: 200, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [colors.primary, colors.inversePrimary], + ), + ), + child: SafeArea( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ClipOval( + child: Image.asset( + 'assets/images/avatar.jpg', + width: 80, + height: 80, + fit: BoxFit.cover, + ), + ), + SizedBox(height: 16), + Text( + 'Cxx0822', + style: TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ); +} + +Widget buildDrawerItem({ + required BuildContext context, + required PageInfo page, + required VoidCallback onTap, + required bool isSelected, +}) { + final colors = Theme.of(context).colorScheme; + + return Container( + margin: EdgeInsets.symmetric(horizontal: 12, vertical: 4), + decoration: BoxDecoration( + color: isSelected ? colors.primary.withAlpha(50) : Colors.transparent, + borderRadius: BorderRadius.circular(12), + ), + child: ListTile( + leading: Icon( + page.icon, + color: isSelected ? colors.primary : Colors.grey[700], + size: 24, + ), + title: Text( + page.title, + style: TextStyle( + color: isSelected ? colors.primary : Colors.grey[800], + fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, + fontSize: 16, + ), + ), + trailing: + isSelected + ? Icon(Icons.arrow_forward_ios, size: 16, color: colors.primary) + : null, + onTap: onTap, + ), + ); +} diff --git a/lib/layout/menu.dart b/lib/layout/menu.dart new file mode 100644 index 0000000..ccec3eb --- /dev/null +++ b/lib/layout/menu.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; + +class PageInfo { + final String title; + final IconData icon; + + const PageInfo({required this.title, required this.icon}); +} + +final List pages = [ + PageInfo(title: '博客', icon: Icons.article), + PageInfo(title: '分类', icon: Icons.folder), + PageInfo(title: '个人中心', icon: Icons.person), + PageInfo(title: '设置', icon: Icons.settings), + PageInfo(title: '关于我们', icon: Icons.info), +]; diff --git a/lib/main.dart b/lib/main.dart index 3a6b73f..550f17f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,6 +9,8 @@ void main() async { } class MyApp extends StatelessWidget { + const MyApp({super.key}); + @override Widget build(BuildContext context) { return MaterialApp( diff --git a/lib/models/blog.dart b/lib/models/blog.dart index 1a11766..9a548bf 100644 --- a/lib/models/blog.dart +++ b/lib/models/blog.dart @@ -59,4 +59,20 @@ class Blog { factory Blog.fromJson(Map json) => _$BlogFromJson(json); Map toJson() => _$BlogToJson(this); -} \ No newline at end of file +} + +@JsonSerializable() +class BlogCategory { + @JsonKey(name: 'name') + final String name; + + @JsonKey(name: 'count') + final int count; + + BlogCategory({required this.name, required this.count}); + + factory BlogCategory.fromJson(Map json) => + _$BlogCategoryFromJson(json); + + Map toJson() => _$BlogCategoryToJson(this); +} diff --git a/lib/models/blog.g.dart b/lib/models/blog.g.dart index 43fbbdf..3ba4cf3 100644 --- a/lib/models/blog.g.dart +++ b/lib/models/blog.g.dart @@ -35,3 +35,11 @@ Map _$BlogToJson(Blog instance) => { 'createTime': instance.createTime, 'updateTime': instance.updateTime, }; + +BlogCategory _$BlogCategoryFromJson(Map json) => BlogCategory( + name: json['name'] as String, + count: (json['count'] as num).toInt(), +); + +Map _$BlogCategoryToJson(BlogCategory instance) => + {'name': instance.name, 'count': instance.count}; diff --git a/lib/pages/blog_detail_page.dart b/lib/pages/blog_detail_page.dart new file mode 100644 index 0000000..8d602b5 --- /dev/null +++ b/lib/pages/blog_detail_page.dart @@ -0,0 +1,155 @@ +import 'package:blog_app/apis/blog.dart'; +import 'package:blog_app/models/blog.dart'; +import 'package:flutter/material.dart'; +import 'package:markdown_widget/config/toc.dart'; +import 'package:markdown_widget/widget/markdown.dart'; + +class BlogDetailPage extends StatefulWidget { + final int blogId; + + const BlogDetailPage({super.key, required this.blogId}); + + @override + State createState() => _BlogDetailPageState(); +} + +class _BlogDetailPageState extends State { + final tocController = TocController(); + bool _showToc = false; + late Future _blogDetail; + + @override + void initState() { + super.initState(); + _blogDetail = _loadBlogDetail(); + } + + Future _loadBlogDetail() async { + try { + return await queryBlogByIdApi(widget.blogId); + } catch (e) { + throw Exception('获取博客详情失败: $e'); + } + } + + Widget _buildBlogTitle(String title) { + return Text( + title, + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Theme.of(context).colorScheme.primary, + ), + ); + } + + Widget _buildTocPanel() => Visibility( + visible: _showToc, + child: Align( + alignment: Alignment.bottomRight, + child: Container( + width: 250, + height: 400, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(50), + blurRadius: 8, + offset: const Offset(0, 4), + ), + ], + border: Border.all(color: Colors.grey[300]!), + ), + child: Column( + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: Colors.grey[100], + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(12), + topRight: Radius.circular(12), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Text( + '目录', + style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16), + ), + ], + ), + ), + Expanded( + child: TocWidget( + controller: tocController, + tocTextStyle: TextStyle(fontSize: 14), + ), + ), + ], + ), + ), + ), + ); + + Widget _buildMarkdown(String data) => + MarkdownWidget(data: data, tocController: tocController); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('博客详情')), + body: Container( + padding: EdgeInsets.all(16), + child: FutureBuilder( + future: _blogDetail, + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) { + return Center(child: CircularProgressIndicator()); + } + + if (snapshot.hasError) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [Text('加载失败: ${snapshot.error}')], + ), + ); + } + + if (!snapshot.hasData) { + return Center(child: Text('暂无数据')); + } + + final blogDetail = snapshot.data!; + return _buildBlogDetailContent(context, blogDetail); + }, + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: () => setState(() => _showToc = !_showToc), + mini: true, + backgroundColor: Theme.of(context).primaryColor, + child: Icon(_showToc ? Icons.close : Icons.list, color: Colors.white), + ), + ); + } + + Widget _buildBlogDetailContent(BuildContext context, Blog blogDetail) { + return Stack( + children: [ + Column( + children: [ + _buildBlogTitle(blogDetail.title), + SizedBox(height: 10), + Expanded(child: _buildMarkdown(blogDetail.content!)), + ], + ), + _buildTocPanel(), + ], + ); + } +} diff --git a/lib/pages/blog_list_page.dart b/lib/pages/blog_list_page.dart new file mode 100644 index 0000000..bf4c285 --- /dev/null +++ b/lib/pages/blog_list_page.dart @@ -0,0 +1,139 @@ +import 'package:blog_app/apis/blog.dart'; +import 'package:blog_app/models/blog.dart'; +import 'package:blog_app/widget/blog.dart'; +import 'package:blog_app/widget/common.dart'; +import 'package:flutter/material.dart'; + +class BlogListPage extends StatefulWidget { + final String category; + + const BlogListPage({super.key, required this.category}); + + @override + State createState() => _BlogListPageState(); +} + +class _BlogListPageState extends State { + late List blogs = []; + + @override + void initState() { + super.initState(); + _loadBlogList(); + } + + Future _loadBlogList() async { + try { + final result = await queryBlogByConditionApi(widget.category, null, null); + setState(() { + blogs = result; + }); + } catch (e) { + throw Exception('获取博客列表失败: $e'); + } + } + + Widget _buildTitle() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + '博客列表', + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600), + ), + Text( + '共 ${blogs.length} 篇', + style: TextStyle(color: Colors.grey.shade600, fontSize: 14), + ), + ], + ); + } + + Widget _buildBlogItem(BuildContext context, Blog blog, int index) { + final colors = Theme.of(context).colorScheme; + + return buildCard( + context: context, + child: Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + SizedBox( + width: 25, + child: Text( + index.toString(), + style: TextStyle( + fontWeight: FontWeight.w500, + color: colors.primary, + ), + ), + ), + + // 发布时间 + SizedBox( + width: 150, + child: Text( + blog.createTime, + style: TextStyle(fontSize: 14, color: Colors.grey.shade600), + ), + ), + + // 标题 + Expanded( + child: Text( + blog.title, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + color: colors.primary, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ), + ); + } + + Widget _buildBlogList() { + return ListView.builder( + itemCount: blogs.length, + itemBuilder: (context, index) { + final blog = blogs[index]; + return InkWell( + onTap: () => navigatorToBlogDetail(context, blog.id), + child: _buildBlogItem(context, blog, index + 1), + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + final colors = Theme.of(context).colorScheme; + + return Scaffold( + appBar: AppBar(title: Text('博客详情')), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Text( + widget.category, + style: TextStyle(fontSize: 20, color: colors.primary), + ), + ), + const SizedBox(height: 8), + _buildTitle(), + const SizedBox(height: 8), + Expanded(child: blogs.isEmpty ? buildEmpty() : _buildBlogList()), + ], + ), + ), + ); + } +} diff --git a/lib/pages/blog_page.dart b/lib/pages/blog_page.dart index dac6bed..674b284 100644 --- a/lib/pages/blog_page.dart +++ b/lib/pages/blog_page.dart @@ -1,6 +1,8 @@ import 'package:blog_app/apis/blog.dart'; import 'package:blog_app/models/blog.dart'; +import 'package:blog_app/widget/easy_refresh.dart'; import 'package:blog_app/widget/blog.dart'; +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; class BlogPage extends StatefulWidget { @@ -13,26 +15,129 @@ class BlogPage extends StatefulWidget { class _BlogPageState extends State { late List blogList = []; + int _currentPage = 1; + final int _pageSize = 5; + bool _hasMore = true; + bool _showScrollToTop = false; + + final EasyRefreshController _freshController = EasyRefreshController( + controlFinishRefresh: true, + controlFinishLoad: true, + ); + + final ScrollController _scrollController = ScrollController(); + @override void initState() { super.initState(); - // 初始加载数据 - _loadData(); + _loadData(isRefresh: true); + _scrollController.addListener(_onScroll); } - Future _loadData() async { - final result = await queryBlogByPageApi(1, 10); + @override + void dispose() { + _scrollController.removeListener(_onScroll); + _freshController.dispose(); + _scrollController.dispose(); + super.dispose(); + } - setState(() { - blogList = result.records; - }); + Future _loadData({required bool isRefresh}) async { + try { + // 如果是刷新,重置页码 + if (isRefresh) { + _currentPage = 1; + } + + final result = await queryBlogByPageApi(_currentPage, _pageSize); + + setState(() { + if (isRefresh) { + // 刷新时直接替换数据 + blogList = result.records; + } else { + // 加载更多时追加数据 + blogList.addAll(result.records); + } + + // 判断是否还有更多数据 + _hasMore = result.current < result.pages; + // 如果有更多数据,准备加载下一页 + if (_hasMore) { + _currentPage++; + } + }); + } catch (e) { + // 处理错误 + debugPrint('加载数据失败: $e'); + } finally { + _freshController.finishRefresh(); + _freshController.resetFooter(); + } + } + + // 下拉刷新 + Future _onRefresh() async { + await _loadData(isRefresh: true); + } + + // 上拉加载 + Future _onLoad() async { + if (_hasMore) { + await _loadData(isRefresh: false); + _freshController.finishLoad(IndicatorResult.success); + } else { + _freshController.finishLoad(IndicatorResult.noMore); + } + } + + void _onScroll() { + // 当滚动距离超过300时显示返回顶部按钮 + if (_scrollController.offset > 300) { + if (!_showScrollToTop) { + setState(() { + _showScrollToTop = true; + }); + } + } else { + if (_showScrollToTop) { + setState(() { + _showScrollToTop = false; + }); + } + } + } + + // 滚动到顶部 + void _scrollToTop() => scrollToTopAnimateTo(_scrollController); + + Widget buildBlogList() { + return ListView.builder( + controller: _scrollController, + itemCount: blogList.length, + itemBuilder: (context, index) { + final blog = blogList[index]; + return InkWell( + onTap: () => navigatorToBlogDetail(context, blog.id), + child: BlogCard(blog: blogList[index]), + ); + }, + ); } @override Widget build(BuildContext context) { - return ListView.builder( - itemCount: blogList.length, - itemBuilder: (context, index) => BlogCard(blog: blogList[index]), + return Stack( + children: [ + buildEasyRefresh( + freshController: _freshController, + onRefresh: _onRefresh, + onLoad: _onLoad, + body: buildBlogList(), + ), + if (_showScrollToTop) + buildScrollToTop(context: context, scrollToTop: _scrollToTop), + ], ); } } diff --git a/lib/pages/category_page.dart b/lib/pages/category_page.dart new file mode 100644 index 0000000..7153bde --- /dev/null +++ b/lib/pages/category_page.dart @@ -0,0 +1,154 @@ +import 'package:blog_app/apis/blog.dart'; +import 'package:blog_app/models/blog.dart'; +import 'package:blog_app/pages/blog_list_page.dart'; +import 'package:blog_app/widget/common.dart'; +import 'package:flutter/material.dart'; + +class CategoryPage extends StatefulWidget { + const CategoryPage({super.key}); + + @override + State createState() => _CategoryPageState(); +} + +class _CategoryPageState extends State { + late List categories = []; + + @override + void initState() { + super.initState(); + _loadBlogCategory(); + } + + Future _loadBlogCategory() async { + try { + final result = await queryBlogCategoryApi(); + setState(() { + categories = result; + }); + } catch (e) { + throw Exception('获取博客分类失败: $e'); + } + } + + Widget _buildTitle() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primary, + borderRadius: BorderRadius.circular(8), + ), + child: Text( + '共 ${categories.length} 个分类', + style: const TextStyle( + fontWeight: FontWeight.w500, + color: Colors.white, + ), + ), + ), + ], + ); + } + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTitle(), + SizedBox(height: 10), + // 分类列表 + Expanded( + child: ListView.builder( + itemCount: categories.length, + itemBuilder: (context, index) { + final category = categories[index]; + return _buildCategoryCard(context, category); + }, + ), + ), + ], + ); + } + + Widget _buildCategoryCard(BuildContext context, BlogCategory category) { + final colors = Theme.of(context).colorScheme; + + return buildCard( + context: context, + child: ListTile( + leading: Container( + width: 50, + height: 50, + decoration: BoxDecoration( + color: colors.primary.withAlpha(50), + shape: BoxShape.circle, + ), + child: Icon(Icons.folder, color: colors.primary, size: 28), + ), + title: Text( + category.name, + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600), + ), + subtitle: Padding( + padding: const EdgeInsets.only(top: 4.0), + child: Text( + '${category.count} 篇博客', + style: TextStyle(fontSize: 14, color: Colors.grey.shade600), + ), + ), + trailing: Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: colors.primary.withAlpha(50), + borderRadius: BorderRadius.circular(16), + ), + child: Text( + category.count.toString(), + style: TextStyle( + color: colors.primary, + fontWeight: FontWeight.bold, + ), + ), + ), + onTap: () => _navigateToBlogList(context, category), + ), + ); + } + + void _navigateToBlogList(BuildContext context, BlogCategory category) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => BlogListPage(category: category.name), + ), + ); + } + + void _showCategoryDetail(BuildContext context, BlogCategory category) { + showDialog( + context: context, + builder: + (context) => AlertDialog( + title: Text(category.name), + content: Text('该分类下有 ${category.count} 篇博客'), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('关闭'), + ), + ElevatedButton( + onPressed: () { + Navigator.of(context).pop(); + // 这里可以添加跳转到该分类博客列表的逻辑 + }, + child: const Text('查看博客'), + ), + ], + ), + ); + } +} diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart index 78c3187..21bb32b 100644 --- a/lib/pages/home_page.dart +++ b/lib/pages/home_page.dart @@ -1,7 +1,8 @@ +import 'package:blog_app/layout/drawer.dart'; +import 'package:blog_app/layout/menu.dart'; import 'package:blog_app/pages/about_page.dart'; import 'package:blog_app/pages/blog_page.dart'; -import 'package:blog_app/pages/message_page.dart'; -import 'package:blog_app/pages/profile_page.dart'; +import 'package:blog_app/pages/category_page.dart'; import 'package:blog_app/pages/settings_page.dart'; import 'package:flutter/material.dart'; @@ -14,18 +15,6 @@ class _HomePageState extends State { int _currentPageIndex = 0; late PageController _pageController; - // 页面标题列表 - final List _pageTitles = ['博客', '消息中心', '设置', '关于我们']; - - // 页面图标列表 - final List _pageIcons = [ - Icons.article, - Icons.person, - Icons.message, - Icons.settings, - Icons.info, - ]; - @override void initState() { super.initState(); @@ -46,7 +35,7 @@ class _HomePageState extends State { _currentPageIndex = index; }); }, - children: [BlogPage(), MessagePage(), SettingsPage(), AboutPage()], + children: [BlogPage(), CategoryPage(), SettingsPage(), AboutPage()], ); } @@ -55,7 +44,7 @@ class _HomePageState extends State { return Scaffold( appBar: AppBar( title: Text( - _pageTitles[_currentPageIndex], + pages[_currentPageIndex].title, style: TextStyle(color: Colors.white), ), backgroundColor: Theme.of(context).colorScheme.primary, @@ -79,6 +68,35 @@ class _HomePageState extends State { ); } + void onTapDrawerItem(int index) { + setState(() { + _currentPageIndex = index; + }); + _pageController.animateToPage( + index, + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + Navigator.pop(context); + } + + Widget _buildDrawerBody() { + return ListView( + padding: EdgeInsets.zero, + children: [ + ...List.generate( + pages.length, + (index) => buildDrawerItem( + context: context, + page: pages[index], + isSelected: index == _currentPageIndex, + onTap: () => onTapDrawerItem(index), + ), + ), + ], + ); + } + Widget _buildDrawer() { return Drawer( child: Container( @@ -86,145 +104,12 @@ class _HomePageState extends State { child: Column( children: [ // 抽屉头部 - _buildDrawerHeader(), - + buildDrawerHeader(context), // 菜单项列表 - Expanded( - child: ListView( - padding: EdgeInsets.zero, - children: [ - ...List.generate( - _pageTitles.length, - (index) => _buildDrawerItem( - icon: _pageIcons[index], - title: _pageTitles[index], - index: index, - ), - ), - ], - ), - ), + Expanded(child: _buildDrawerBody()), ], ), ), ); } - - Widget _buildDrawerHeader() { - return Container( - width: double.infinity, - height: 200, - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [Colors.blue, Colors.lightBlue], - ), - ), - child: SafeArea( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircleAvatar( - radius: 40, - backgroundColor: Colors.white.withOpacity(0.3), - child: Icon(Icons.person, size: 50, color: Colors.white), - ), - SizedBox(height: 16), - Text( - '用户名', - style: TextStyle( - color: Colors.white, - fontSize: 20, - fontWeight: FontWeight.bold, - ), - ), - SizedBox(height: 4), - Text( - 'user@example.com', - style: TextStyle(color: Colors.white70, fontSize: 14), - ), - ], - ), - ), - ); - } - - Widget _buildDrawerItem({ - required IconData icon, - required String title, - required int index, - }) { - final bool isSelected = index == _currentPageIndex; - final bool isSpecialItem = index == -1; // 特殊菜单项标识 - - return Container( - margin: EdgeInsets.symmetric(horizontal: 12, vertical: 4), - decoration: BoxDecoration( - color: isSelected ? Colors.blue.withOpacity(0.1) : Colors.transparent, - borderRadius: BorderRadius.circular(12), - ), - child: ListTile( - leading: Icon( - icon, - color: - isSelected - ? Colors.blue - : isSpecialItem - ? Colors.grey[600] - : Colors.grey[700], - size: 24, - ), - title: Text( - title, - style: TextStyle( - color: - isSelected - ? Colors.blue - : isSpecialItem - ? Colors.grey[600] - : Colors.grey[800], - fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, - fontSize: 16, - ), - ), - trailing: - isSelected - ? Icon(Icons.arrow_forward_ios, size: 16, color: Colors.blue) - : null, - onTap: () { - if (!isSpecialItem) { - // 正常页面切换 - setState(() { - _currentPageIndex = index; - }); - _pageController.animateToPage( - index, - duration: Duration(milliseconds: 300), - curve: Curves.easeInOut, - ); - } else { - // 特殊菜单项处理 - _handleSpecialItemTap(title); - } - Navigator.pop(context); // 关闭抽屉 - }, - ), - ); - } - - void _handleSpecialItemTap(String title) { - // 处理特殊菜单项的点击事件 - switch (title) { - case '帮助中心': - print('打开帮助中心'); - break; - case '意见反馈': - print('打开意见反馈'); - break; - case '退出登录': - print('执行退出登录'); - break; - } - } } diff --git a/lib/widget/blog.dart b/lib/widget/blog.dart index f5603e0..b036a36 100644 --- a/lib/widget/blog.dart +++ b/lib/widget/blog.dart @@ -1,5 +1,7 @@ import 'package:blog_app/models/blog.dart'; +import 'package:blog_app/pages/blog_detail_page.dart'; import 'package:blog_app/utils/date_utils.dart'; +import 'package:blog_app/widget/common.dart'; import 'package:flutter/material.dart'; class BlogLabel { @@ -111,34 +113,45 @@ class BlogCard extends StatelessWidget { @override Widget build(BuildContext context) { - final colors = Theme.of(context).colorScheme; - - return Card( - elevation: 0, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), - child: Container( - width: double.infinity, - decoration: BoxDecoration( - color: colors.surface, - borderRadius: BorderRadius.circular(12), - border: Border.all(color: colors.outline.withAlpha(50), width: 1), - ), - child: Padding( - padding: EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - _buildBlogTitle(context), - SizedBox(height: 16), - _buildBlogLabel(), - SizedBox(height: 16), - Container(height: 1, width: 80, color: Theme.of(context).colorScheme.primary), - SizedBox(height: 16), - _buildBlogSummary(), - ], - ), + return buildCard( + context: context, + child: Padding( + padding: EdgeInsets.all(12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + _buildBlogTitle(context), + SizedBox(height: 16), + _buildBlogLabel(), + SizedBox(height: 16), + Container( + height: 1, + width: 80, + color: Theme.of(context).colorScheme.primary, + ), + SizedBox(height: 16), + _buildBlogSummary(), + ], ), ), ); } } + +void navigatorToBlogDetail(BuildContext context, int blogId) { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => BlogDetailPage(blogId: blogId)), + ); +} + +Widget buildEmpty() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('暂无数据', style: TextStyle(fontSize: 16, color: Colors.grey)), + ], + ), + ); +} diff --git a/lib/widget/common.dart b/lib/widget/common.dart new file mode 100644 index 0000000..c7b7e4f --- /dev/null +++ b/lib/widget/common.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +Widget buildCard({required BuildContext context, required Widget child}) { + final colors = Theme.of(context).colorScheme; + return Card( + elevation: 0, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + child: Container( + width: double.infinity, + decoration: BoxDecoration( + color: colors.surface, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: colors.outline.withAlpha(50), width: 1), + ), + child: Padding(padding: EdgeInsets.all(8), child: child), + ), + ); +} diff --git a/lib/widget/easy_refresh.dart b/lib/widget/easy_refresh.dart new file mode 100644 index 0000000..fc42b24 --- /dev/null +++ b/lib/widget/easy_refresh.dart @@ -0,0 +1,65 @@ +import 'package:easy_refresh/easy_refresh.dart'; +import 'package:flutter/material.dart'; + +Widget buildEasyRefresh({ + required EasyRefreshController freshController, + required Future Function()? onRefresh, + required Future Function()? onLoad, + required Widget body, +}) { + return EasyRefresh( + controller: freshController, + header: ClassicHeader( + dragText: '下拉刷新', + armedText: '释放刷新', + readyText: '准备刷新', + processingText: '刷新中...', + processedText: '刷新完成', + failedText: '刷新失败', + noMoreText: '没有更多数据', + showText: true, + messageText: '更新于 %T', + showMessage: true, + ), + footer: ClassicFooter( + dragText: '上拉加载', + armedText: '释放加载', + readyText: '准备加载', + processingText: '加载中...', + processedText: '加载完成', + failedText: '加载失败', + noMoreText: '没有更多数据', + showText: true, + messageText: '更新于 %T', + showMessage: true, + ), + onRefresh: onRefresh, + onLoad: onLoad, + child: body, + ); +} + +Widget buildScrollToTop({ + required BuildContext context, + required VoidCallback scrollToTop, +}) { + return Positioned( + right: 0, + bottom: 20, + child: FloatingActionButton( + onPressed: scrollToTop, + backgroundColor: Theme.of(context).colorScheme.primary, + elevation: 2, + mini: true, + child: const Icon(Icons.arrow_upward, color: Colors.white), + ), + ); +} + +void scrollToTopAnimateTo(ScrollController controller) { + controller.animateTo( + 0, + duration: const Duration(milliseconds: 500), // 滚动动画时长 + curve: Curves.easeInOut, // 滚动动画曲线 + ); +} diff --git a/pubspec.lock b/pubspec.lock index 8411136..84204aa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -193,6 +193,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" + easy_refresh: + dependency: "direct main" + description: + name: easy_refresh + sha256: "486e30abfcaae66c0f2c2798a10de2298eb9dc5e0bb7e1dba9328308968cae0c" + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.4.0" fake_async: dependency: transitive description: @@ -313,7 +321,7 @@ packages: source: hosted version: "4.1.2" intl: - dependency: "direct dev" + dependency: "direct main" description: name: intl sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf @@ -464,6 +472,22 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" + path_drawing: + dependency: transitive + description: + name: path_drawing + sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.0" path_provider_linux: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d245317..a1f6f02 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,8 @@ dependencies: shared_preferences: ^2.3.0 logger: ^2.6.0 json_annotation: ^4.9.0 + intl: ^0.19.0 + easy_refresh: ^3.4.0 dev_dependencies: flutter_test: @@ -52,14 +54,15 @@ dev_dependencies: flutter_lints: ^5.0.0 build_runner: ^2.4.5 json_serializable: ^6.7.1 - intl: ^0.19.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec flutter: uses-material-design: true + assets: + - assets/images/ fonts: - family: CustomFont fonts: - - asset: fonts/custom.ttf + - asset: assets/fonts/custom.ttf