From 883d35d1eb1768f63900aba24b73ad8b0547d29e Mon Sep 17 00:00:00 2001 From: CYH <13923927013@163.com> Date: Sun, 8 Oct 2023 15:36:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=8E=B0=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E5=A1=AB=E5=86=99=E5=BE=AE=E4=BF=A1=E5=8F=B7=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle_app/assets/images/circle/chat_icon.png | Bin 0 -> 9546 bytes .../assets/images/circle/clocked_icon.png | Bin 0 -> 17466 bytes circle_app/assets/images/circle/like_icon.png | Bin 0 -> 6742 bytes .../assets/images/circle/love_gift_icon.png | Bin 0 -> 30183 bytes circle_app/assets/images/circle/love_icon.png | Bin 0 -> 3812 bytes .../assets/images/circle/no_look_icon.png | Bin 0 -> 6311 bytes .../assets/images/circle/nor_like_icon.png | Bin 0 -> 2697 bytes .../assets/images/circle/right_icon.png | Bin 0 -> 487 bytes .../assets/images/circle/today_heart_icon.png | Bin 0 -> 4958 bytes .../assets/images/circle/unclock_icon.png | Bin 0 -> 5637 bytes circle_app/assets/images/circle/wx.png | Bin 0 -> 2759 bytes circle_app/assets/images/home/wx_close.png | Bin 0 -> 5377 bytes circle_app/assets/images/home/wx_tip_bg.png | Bin 0 -> 76452 bytes .../assets/images/home/wx_tip_title.png | Bin 0 -> 25632 bytes .../images/mine/icon_recharge_first.png | Bin 0 -> 5285 bytes .../images/mine/icon_recharge_fourth.png | Bin 0 -> 11202 bytes .../images/mine/icon_recharge_second.png | Bin 0 -> 9552 bytes .../images/mine/icon_recharge_third.png | Bin 0 -> 9723 bytes .../images/mine/icon_yaoqing_xin_left.png | Bin 0 -> 1765 bytes .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../tim_uikit_text_field_layout/narrow.dart | 241 ++--- circle_app/lib/app/circle/discover_page.dart | 34 + circle_app/lib/app/circle/logic.dart | 12 + circle_app/lib/app/circle/view.dart | 318 +++--- .../lib/app/circle/widgets/discover.dart | 956 ++++++++++++++++++ .../app/circle/widgets/info_list_view.dart | 13 +- .../lib/app/circle/widgets/vicinity.dart | 469 +++++++++ .../app/login/complete_material/logic.dart | 25 + .../app/login/complete_material/state.dart | 1 + .../lib/app/login/complete_material/view.dart | 27 + circle_app/lib/app/login/login/logic.dart | 6 +- circle_app/lib/app/userinfo/logic.dart | 10 +- circle_app/lib/app/userinfo/view.dart | 72 ++ circle_app/lib/common/Widgets/add_wx_tip.dart | 199 ++++ .../lib/common/Widgets/base_tip_widget.dart | 7 + circle_app/lib/common/Widgets/genderview.dart | 186 ++++ .../lib/common/Widgets/unlock_wx_tip.dart | 442 ++++++++ circle_app/lib/common/colors/app_color.dart | 16 + circle_app/lib/common/const.dart | 91 ++ circle_app/lib/common/values/values.dart | 2 +- circle_app/lib/network/api.dart | 26 +- circle_app/lib/router/app_pages.dart | 7 +- circle_app/lib/router/app_routers.dart | 4 + circle_app/lib/util/paymentUtil.dart | 24 +- circle_app/lib/util/util.dart | 67 +- 45 files changed, 2955 insertions(+), 302 deletions(-) create mode 100644 circle_app/assets/images/circle/chat_icon.png create mode 100644 circle_app/assets/images/circle/clocked_icon.png create mode 100644 circle_app/assets/images/circle/like_icon.png create mode 100644 circle_app/assets/images/circle/love_gift_icon.png create mode 100644 circle_app/assets/images/circle/love_icon.png create mode 100644 circle_app/assets/images/circle/no_look_icon.png create mode 100644 circle_app/assets/images/circle/nor_like_icon.png create mode 100644 circle_app/assets/images/circle/right_icon.png create mode 100644 circle_app/assets/images/circle/today_heart_icon.png create mode 100644 circle_app/assets/images/circle/unclock_icon.png create mode 100644 circle_app/assets/images/circle/wx.png create mode 100644 circle_app/assets/images/home/wx_close.png create mode 100644 circle_app/assets/images/home/wx_tip_bg.png create mode 100644 circle_app/assets/images/home/wx_tip_title.png create mode 100644 circle_app/assets/images/mine/icon_recharge_first.png create mode 100644 circle_app/assets/images/mine/icon_recharge_fourth.png create mode 100644 circle_app/assets/images/mine/icon_recharge_second.png create mode 100644 circle_app/assets/images/mine/icon_recharge_third.png create mode 100644 circle_app/assets/images/mine/icon_yaoqing_xin_left.png create mode 100644 circle_app/lib/app/circle/discover_page.dart create mode 100644 circle_app/lib/app/circle/widgets/discover.dart create mode 100644 circle_app/lib/app/circle/widgets/vicinity.dart create mode 100644 circle_app/lib/common/Widgets/add_wx_tip.dart create mode 100644 circle_app/lib/common/Widgets/genderview.dart create mode 100644 circle_app/lib/common/Widgets/unlock_wx_tip.dart create mode 100644 circle_app/lib/common/colors/app_color.dart create mode 100644 circle_app/lib/common/const.dart diff --git a/circle_app/assets/images/circle/chat_icon.png b/circle_app/assets/images/circle/chat_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f7498a9c205f28b128a915575aa7c09fc2975371 GIT binary patch literal 9546 zcmV-QCAHd#P)PyA07*naRCr$PeR-T!#kKCLz0c4yNHa7DVO9ixURsuIuMMlbbbGcK zrN@9LPZBZg3j+Fqki$TVT2WQyD-%%pX%*eF2$RmSnhQl^&1zW+`|CM;C> ze(s|&V@kUT&u!l3e+|$B-g$olc;3+<GEHr5JA$w-K zRtHHTg;28s>WiK*oELqpnhZ5x=`_e7XcMuR75V;;S06TN)9wI$w*o!%tq;zVAipWf z%T9$T1{stH6of$oq`(nEN-4D!^G7Ne6gt21(Zii zSi?iEm2H!37rnJY8?8?VLJd872>gQQo25WLLbDGUYwXS6Xae;_#@dHC*D&!_3g5>k zh{D?nvU0}fyp%#2XuMgKWIwnzU%%t?b;v z%Nn~0z}AhSckw-dC<aMgaq^fab_VQS2K2$d`|us<`Qt#wmPWCm5}!5M99gxpCM01rc=aCQLuL!=;Pm5 zUe?;4|D#By#>pte2V;k9O-iL_$+)HLToDnI@u6*7kKAEMuJ7ePIhi=9Bv1jT?v0aR zC?0{D%zS9%=%dUJ6f$&5j|M|Q)-SIVajxz9MW^pSV@JT=IiRH!V}HBk7sB^00HsF| zb;HC0S(PzL{m>@f@oLxRq7)1@SnWOx|F!mytb=^IVlMol0B86hGjVZJs8~$vmtag`q}9mBNd=GQAAtBQS@P$x~R2G!jS!)`AnWh`GI(|<$Ut+kwZ~Vda&z^T42B__Px()RBUww34s=WH%u+V0svhbvo zG25YYJHw8Q<{&&*eKSFwCWwI}E@G5A=eVTrbQgEW^=`8s2H0g7MBr@$ zR2~;2-BTHa2VN8(`TO(s`^zo``oyP~?Bk_VAIm6AFgUuk)seM{u*>}~XKxE}o$ED+G1h0{)ETpJ5x=c_lDlY{x z4p$ug(cEFvrcK*!A)#9qJ>lt({{kKyu94x0Pw|fg-(<$c2@5Lt2^GjtDD;nHOb*p{ z+yMG+^uNfth@D_^iAW}rB7%*6k5_jz0F&`ss%WxF$CfF&I~l4gh~WbAQYnao@cvgX z9Cht3aUG{Tx%fQcdryK8X)cBsu*utL3dK^V=D6yqt$=C7{RHP@mO+A!29X3HJ!ra) zOWTaulHN}%giOvXFr#MK(Q1snC4ju0-8!dS^N+l^3Q8Dn=wqGFB%wE5W!1`+VdvI{0^F7wjMPbFhsFL_?dhBG_an`2FG<%5?$>p`ZzM_My_8{??ihw3b% z7{-wH1^Aw;Pm{3J!K9q5(!mrbRRLy9RO?4uVHczzQr1c}2}*1^lhxBAbCB|eyl~OJ zs`X)uPnUrH+MJ~eyj1#_I0`zs1UtCo3Nt6EU$YKjgE__f4wK_B1$96+C1jZ|#Hc>y z@b!ax!_WV*K`va;CXB}6P{*wALq*n;VHk@rmQad8h7nslO&*C^#*1NHm#(*!goX2} zB=0c7S1MZ$VSE02&wq2jJ9h}^v!DE^KZO1oqMVxKWBAe*;7*i%I$ok%$fHOwIH_T( zgoG6<*HJ9heOTiIEed(Xc6pa*7xf z%9X!UD`pEE+(-WPph)|Z6{Xv1a$q=;6Oow(Bo#2{-pC%bw^wx! zDItsjqBw>TeahjWft7I3zzP`LD+}3_2jyvRt1(7d>kYqN2`e`i!BZ;*q$q_F&izU+ z`1)ae66YwOZ~pBn$Q7e)jKc|njsYdK?X8W+VJTiZ3t=gL)x66`&+Zn`6Yqa1TT?M& zg#_78+c9atjudK&rx+n!Wz8YMtb=JTN(EL4P+jK3(Aq5Q)2{+X)n#FHzY5T0yDogx z;}nA!R&FZ7tuL;YYO)m2g;ESRp0YO_F|0aql@C_u;m5D9fkKGdtntU@cIdNFKH!QY zWvTiUW*=q|u&zMy1JCn?SoZYg`|Q&#pf7o3+3`^vzW^YrY|6{To_rl?$_O;2rb?XA z-+IK^4F59GOAYkM;Wcp0iFI9o)gIDbieXt}0Twsp;nT(fykDP(bjlX0^2G@5K4&oO z+rK<<-9ImDg@+e3LZGYhOn00~C46ZdPX0|vEBkOd7hS2I7>DNRZ<|F_JocAU4)~}0 z0NXX6iyvAxT?lcDjP1ketSMo+2(b1RBneSNkeV51*@$P!Swm{vT;)hTNY53 zFj_NZf3iF+#E&i-0zE1)XsVA2uyg*@B>%XiSyOG}cQr4!(vg#wI&BSnm4q&{6@iTV zNpuB$Zc`{Pefc{hiyhD2!lJ%0Ye}sD|8D}kq1?}=Z)GTuX})04sT0Lf#cV^2nHVD& z=;E}5Ue#$B*{=*X=Ofsd3+1}zl4#CHaKoelaMY+8^IW+?1h+p|4{J9ElyV!q5CIZf z>w0G3`{xXV$}$UdF_19xBNmJ@7ap>cz5MVePF z3)I#w5;RM>iEB>p4~Oq-1DXQ*2hVDtsqG7s2GiR}>Hog{v*OxG1E9=dDrz;{F}EI? zS^`$8P_MRh-*oEXubk`RBqsEgB&RhZm1(TRF4kc0$FCW+rc;al_I;n6mC97i3rab3 z8isY4QorLnoQ%rQ9osHoS^+xh9vnNVd5D{j6q~r}^!_kzR1)aBo~eh%O(EsKc#;N1 zf$XWehZIMRsex~t*ax#l`ZVVvxbcb4wQIt{kBwjqtXULnjS>2< z>Ux=M6$I`1lOMTm`0JelJ$c5mX@0uw)-WhqrfAD46m&_HNirWio--VblD6`Rch<*5 zv6MxH8x>r6x{866-#ur5IAXK|bbAE1J-G@RHe&NWw}mO($}*mg{;`zetK)jXq$7JJ zT;YnwB7Fael~7Tp1S(Udr%E}xd#(!EA^}@6O_JptOHVkzZ8BP+#O z$JQpS4`)F_b-522XZfpfHs?a!^zVL@Te$z(HIOf=;346{llsEZU$(wo9sBl&E%5kD z>tr^iNwOKl7QJNXAN7b_x8jmPCqFUPZHjVaLS8xzaVeZX`-b6XcM9~?_k6Ngc>ZW9 zRmw{9oD6Q1Pm>bu08edNxY*2+<2Ym5Y2~=lmEz)4`)&br63XrW)S8dr2XpFWTP_so zw197YwN4%|q9PG{9(%qK7A)BKwo?JCygMyzUs-eZrgFZh#^H=LniqsmwVX`e3nU+&Bg#@$5g>Z6Z>{K z8{8V?3h29@sF%51Br3{1dF@35L|ttrap?DEeh%t5JqYedO%OCE#-RHqHfyt3>Jy~8 z1FMR5PY3R;!Imbqav_cz@B6ReCL7x(>$vWRpN1-U1FGP{)A}f#qB};MbRGE!?tZi$+VT<9RQfRW%0ZxfHh+RJhVS0_ zDP%G}Mh=V}M8GMSxH$o_7cR9KJ)PJr`A^f1W|CoN3kb2VaK_Z(CKKD{2yeQ#NfryL z5gzkC#Ed>}n}aiK+moEEgrk=0E+RZ~Byc4wDTmjJ=0KAZF#UdQ}yUHtP7wN zB%QR%5}$r?z0Bo9(Wh4$Zk#+QF%ip_x5Lb*8e}GA>T0-)Ko^Ozf|6`yCu&E7#bN?R z9}ekcSLjj`EerbA+PJdiHE`$keG;SIsx{qw&pKHwwBlX`(?d%cpB^It42a2>^oJ2clUhZg7{lzJHOS>F3z&J6uT&$+W_;C# zEss95TAVqtcVav*zp)Wse{++K1E$Z8G>k2Z-x@}wkTe4nzbWa8xr+*i%DOfRC?-~B zvsG}%4ShQY`qsPG%R;fmNxV%TzEeuG{39+7_uwzfuOM?H3>nq`csqKH|^=ld9dUN7q1oLrDtN=)Oh!0>yc% zZd-?Ff}c?*@llgY*-`m8CK)1=$yUQ{|J4PHo;q!LC_wpWvxcaDjmki7t1U-Grbg_W zsgA_$f_y2PkePy&ww@@GaMcxi%RvLP+jME|?J+#`_!?+x3a|)4_binp+<5&U=v`|C zDs{bk?pp<|ZAwj)x`LvfCG87Qmi3@DuL_Wq!=SU(fgfFi!=@Z6O=$u8LORxthc`HB z1{>XZ>rf-sY;!<2-||_b5Pn}x@7x98)YYi18~>`gvaw^5Ly37ibyBo^XQP|utP)Cr zgrkn=0h7+C?KChdu%G%xBdl0al%6Mr;@0VmCvUxZaAG`b*OuV%IcuT4J%V)Fmvwb% zF`$121`jTSVMEK{zM1uqZ^zxDwwu8j3zuZ^p`C^4YHZwsLs_aiM=iG~ZoK36VV$#% zTWMfbW$^7Q`zKEQ@WUL;pSMAVK`f3vu7^D4*q)kevzz|w!d93+uL&|4 zcKYZV$d-^nPw1H#%Nwt6mJ5F04B$!8zkdcUy}S;xW%i=l4b5CFTbd)&so;(W zhhysHc26&5j^ty^$k~Paej36!`1Q0qhMv_a(05E-K0TE#yCnz;PLB^#9sO~0QL=O` zx#+)9ES4aY&aRqa%{k`I)a)+-YI>$%^7R9>wW&{gK8DSkL)m{o#-OS|dGDQ8IP&-& z#v;|Rtt}DE{82qzbXh+bGNQ}?9R?ES&s{J7^ewEt{Xp_kWSaUQYy7M z4dlA(9myTFTj9FXqfdxIjD6ds(H30tr*54usm?Hi#|ya|={d`7rvxN;4`2 z{?8t0kOz;e5{DgYE&t8eHpAO*w8$wp?k%cotlQDY&t5AxHKA4$M6noqbPb$(W-V0;%i+UiAO}sC<95}Yh02-7e{9^W6IP};W z7;|tE=qDd&fDLN{m^^iF*sFIM8tO~%@ZGCn(2y)#Jf#lG%B@>y*&M=yKUl4piCKYa z_wLl63{AL~QZa@{f7~EjTSCkM=&z>Pj23Ys@H>H#xQA(qQ;{{BssPzu7bHj+Qv>5C?Ufk#%4G$Z zbMG2B_uKtov;%Y@AH!2K*TTkifd=`6uk8iDo4Wz>ZL!?%pb9bZ!rFvpvh?pcc<%9a z+9#991wkP7bw}=>Oom?l)dqO~?KWyzV3VaSU$$F~)NkHTWBTQ37qpZ8N?0CdQe$tr zYv6`XfxiEmW!WH|c~XG*H)WxE(}Cf6R0tx8MptrhbDrtmXYocaHKO{i_E=e+l9%07 zC$iaO&&H#-uYvUqfjsly`-oA8RG3LnKtFwdqf|gEHmsUvlpj_g9(h_1arnvBov4#u z{MmX~^7kCKjhP)T{fA}6h1c{;Om16q1hb~r%S@Rjo?KBt?ZJc`W8=;^9Y@Myh42)M zdeM{qdDqVv)ZQu3>VSK%{rn~vKd!SbRlG95FvTkGHE6woM3!Am(e8#``fh~ak=~~#lF0`V!0L?;9zpRfOI=U>up=aH&5<=C% zrgv-DuF)e0SPN^G7s1265=w+jS1>OM_AS_p=|(S(SvqBnZolrQ zLvC?rbDIf^I_UmuR!#sR=YfDqQaH7WrvWruQ>fC#Zxk@?=&WI@NuYfyb{=$q={q|Yz%ZIWGUslwlpsW(a*pqueuexN5!=l$(V8L^nWh$%R=D}&1Y1&Y~ z@KhCtS2pI!W=pE+K#-90q&VZ6S%d!AWuVo8v#wsz03hn9_tLbVnGG~#wKj~HDxNcm zPV+4tsH{H<)+3!ge7ztDrp_O ze>t3UUEhQ&Xj)YQwYRitFU){bDoN3=TC!g|cHA{Lh4949t3f9;6lUTKdv=Ubd|U$W%J{JUC_LOwUVQ9mT5mj+q zSEoR~bdAiegN=nkkRvGR3*ASR0(d!b&dRJpFE>ktw0>r8NZd4zgiK}BD>6(KN2+@8 zDgV)1jOYOL{CgT<UD%qrB znLOAqEW5iUiUwTy|AsVl8)$XHBUjcxo%Yk`hfxu!jNUeanmNf>3E9YUPI?U$rLsh? zsoZ81ShLX(*^9Dh2`5kP4I{=SE&4Ziualb^02vj85%Qa3Si7Vs_n%lTj<_(XjjUNxfZso`9@IOvwtR7bSGiu}9&3iD+8)SIEyl>X3{Zy%OnqB!N z61dZaUy%VqS@ig;YGL@{NsE5z&UMhz7(%w%gRf2N2WkUCesc(g<`~+WV`$qDL7^>z z+{OsnTkvacW2lWl_*gT=RWD?p;TiGOo0CDbZG8wY+`bNqZB$WUpTTOGp{P#MqNpnF zVR^Z4Md7T|W+sE6!K157?x{=bPmDbI8xKUe&J0Z!LQ*c5ygIy;gc}NRM%haw@=90S z)uB?+yYbid5|7 zlT@t-7e6vUpV0Vm30A(FhgI(uWNveag*IBHsF2yUYy*`M*OVX?_?~yk#g7eqc3XIM z$)fq>pI=)4mJs47dVh}IdCe?BI{`<~H#?fBUW~k(gsu)e$?#FSMjXa4WNZc0j>ziw ztf-F?pO(FmgJN?mrDwMHn-|?U{o~Y4!krMxrKw%Liu=O#D& z14PVk>oNMZrg6>-dMNxEPtNa<(Zr7ep?-J}G74gSve}R?K>A9HR*2FbPUkI37_!{% zDW`00O2{VVL;F&br!qkWu>O$gn$W@9??^K@NgBz%>bhw!4TUf_>g!Jp`*?fap<5QM zE;RSz`b#S_J?7+s7L$OoAfO+FKBg?8$4`3$iLp=v17??c5Y8)6cu$UDHr!UPZOm3` zxDIaDHB#IJL%??`AcmAsvPBYDh9S|Db8K;p*WhQ|AdRCUT@CrL_4@Ol9N6hwX}S&c z8<#CFTOVZR3kjz>6#*)3ZBY$yCYgn(L{6-M1@RWclXQaEeOSg^PaWh(Jt}Pe35zQuh|a-`~{?};aZP= z69z_QR?2jTCyE9(y4VNdH_A|*4!fz8OLoPl?adsSI4bj2B6R$$iH#WCbRyz(PNA9O zK}Ph#w3XV&)QVu=PBI>sX+6;jVQ|7(&klZfdoIJS@U9%Sm1E|ezvk@fRP}SYpw(_l zCnv`YgSfq^Zo0IPG;J&yI&eCAk>j5!IkI~xoS@}s$zbRud8y;9+AcVJixLG2bH9xu21Fzx1dhna>Tik(`KV9w3#z{*q(l3avPzw*@koXjR9j?46RT})wZJS4M6 z2g8CrE;C*rM&!b!B7H9ZNT8Ztm;YFdA_vrB+ex>`fo1YZ|Wb$FDJQU!=v+4Y{)MGBownG=pQIaOk)% z36-g8Xp35>pYUSc^zQoPj)?BCMK74xFdBsSzRE&%uO>xnO5e~A(EFHmtqmQg>DNp4 zNsy^=z_T5lbQT)6Qw*i;9;|oUjoeHvEyKWjnn|;7jv!ag#G2g_Y8V1UO9b(?<6r7O zXUEJidDadAyxAe1NPtKouVXSsUrpmBnl9}MK{X?pTaY;=y7KhpOk;{k(eZUx z+WL%sqF+XV48xJ!*fntSgeSQ|2!TK)Sp9?~+Ek{iAs4i~B|LG%(J$A%vnxO*GwR-@ z{(SPfznj%amot!WFbbej;rOyxKtMaUS~h}e z_5|rkRyU`N6Fa={-x29hrtl!;`A~|B*Kf+g!)LrOpi6IP>?(R)w&?ecY3NhRz*{Ll zyH6MgT$SQwrUMeTAt=d>8%u23>XHe>!gLKVkD_O>EW)%YBy%+96`NM+Fk3*}ZYdUV zwL#lx>T(hve2@?oL3r;%D5s2jqu)Qe3SM`P>k`llPii~`Vwjck{1LIHaLHW~n9(_+ zeu7gzDY7i65m1DUOP?H0%jvX}+hV4TN)vu> z6AKcbFkNSc;B>A!Ifx-_PGrzfyLu39^|8%|cowL{BP}vYLw*K?_q`U#)sO#U_Y;s^ z2K3uUtSYZaXYTdA)Z{>_x*PIMZk%CwIdoHi;!fxUd1Zg@(kK?{k(`(nK@|+@EVFMF zU|*wEHXfv582F+wj@bg)Ls9jgXYL+7Z~!8TJ; zanw_F8MPjSr>h?AVY?E4K3D(DhZL|BMCz@tEU0~TX93&M^S9|bJ~*oJp+1?uSGLCm zq`w3LIzf(KbX&tONd2;HGH%6O|1){+W@j=uOApP_$xH1+9@3umK=m z9)oQ3Jb$T-;ZZ=S;HQn_W-?{ o5ZFz(*<;arfZk0A?55lNH(>i=mJsiPJ^%m!07*qoM6N<$f>4uxp8x;= literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/clocked_icon.png b/circle_app/assets/images/circle/clocked_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb09c55cb2a049085391eb98305be861d6a56040 GIT binary patch literal 17466 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 JPDHLkV1iy0=DPp@ literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/like_icon.png b/circle_app/assets/images/circle/like_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b1c9a93bb8a1d000d3b6553473233eb466b686 GIT binary patch literal 6742 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 literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/love_gift_icon.png b/circle_app/assets/images/circle/love_gift_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..64f004b69cfafdf2856d2b0c832fe046b03117e8 GIT binary patch literal 30183 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 E0MHLojQ{`u literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/nor_like_icon.png b/circle_app/assets/images/circle/nor_like_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c76c8a0a8243cf352b3f84dab7bac30b6e810a51 GIT binary patch literal 2697 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 D_uVDR literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/right_icon.png b/circle_app/assets/images/circle/right_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e505f8bce2bcf713c65d71113592f068d195c89a GIT binary patch literal 487 zcmVPx$p-DtRRA@u(+C54HK@dRUS76{-%vWQR6%#Qr_X^&`3uvx^p?|W-DOtM1va$?;Wn>u*3(GPT7MW!@EGo-P zm}{14Fz+l=VV+se1-2^7PhcS;-%}2Avw&4u-UEjf1EL5`;yd&{d1L|mq2>zp8TZ2{>V=!rI$ZVDBX=r*!W(gIlp?m;V{qq(qP{C zWx`zZ3x`GJ7Yd8aFB%q>UkEHCKX+JGei5*g{M=yK`MJR6ke?Uq47jZpH~sco_cPz@ zTd|a~0A7X{&~sGt(PLeV*Tm|-LtKlmBu8?+02=>^G1|$vpr7002ovPDHLkV1k!x+fV=i literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/today_heart_icon.png b/circle_app/assets/images/circle/today_heart_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9edd2201969436faedefa81901d2e190575c1dab GIT binary patch literal 4958 zcmV-k6QS&hP)Px|7)eAyRCr$PTYZ#W)m7j7ocm^8UP4G?X-WA~5CYVcP>c~RxL8mLq|mjrB@`u9 zqNR3Gl_1zGwezN0J{GiCs!+N@sko>#OZhB;DxXm-D0JCs31ABp2pC(N0Ljd}_wGI0 zb*=K&fdTM+rM*yF!M7Z0yu-u#0bm)w37�cZxG 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 literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/unclock_icon.png b/circle_app/assets/images/circle/unclock_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d54a598d1b417aaeccb42af25b1b0123c8412960 GIT binary patch literal 5637 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

oR} zJoHi*&bAc;QMCk}*652_Y%jRGa#imhW^rbC_ua2HnlSoVFrB}F2xfA=$c0kDQ#tv= zEM7RN@klFe;e$A{xS}yvz2Wf;B9ct3HR;PX!n>+T_T4pR fpzt9Ucjo^CKFZmIAMur500000NkvXXu0mjfYoN^< literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/circle/wx.png b/circle_app/assets/images/circle/wx.png new file mode 100644 index 0000000000000000000000000000000000000000..e36abd7bbe6eb6cea634f7cceb8ef2f9fe104013 GIT binary patch literal 2759 zcmV;&3OMzNP)PxSYrucj zCm{j3D-G_Yg|c6&u-oZ_jKZk~_m2))&EQNk$bGhtDxv9vKd)Q7+hTbiK{*tlR`py# zZWo+$OB>5p!Hi!m3*R0*Uz?_G739J)m98&GFyRm4y}Yw-=OU0)DQH38F!W7cB}@Jj z!OyBiLIG;m#fJi~mvXS!uiT{s-${#?8v@XL;Af?s44z8Ra(tIu{?QPCP6oLLXbRJJ zX(UH~N4F$P09iFIA1juKpwu!4_Z(Z&OF3z~UI1X zpsd>p_YANeL=|Q`xQCaHK0C3fLqdEq8$f$NvY;~s_h@_I%}eC}ImH95t)%=5*s8Ea z&@sSs-O_Q^2m`eECWHC@4kM#YZXGFng$}NgKJJscJAeuBHwNgvLa@}Q;qL)X-)NdM zEBGKgfp?ryd|rp#05*cI6LhstZoR?%Fpal4ZpR%4kUc#g77gQCNfqc0CHt^~ z*Dc8nt?Eq?%qhSOhr}^?DDpg$?U4qSui(T0w-k`E@%sV?%W_aNAHSlR?It3c1!ZOcI|vnXgH-5JyK{CZB{B& zuX3NIY3)}^J}PYz3eXHqO%xLA{K&jcIkN|Tx4FP)(}4kvZ34d@bZ7R7L2Pmj2)YG* zAI$NBj4HKg1uiQ0i0#S+u|3n6a8Shuo!2eNP}(FEpxNrRY{NVXG9${WMTMuBnD6Q) znA?i6)pBZy@pBOTpj$k9UzY#cwDTD-Uk}mQNq&lY2PZH+z_{V<%jdzDvLvQHB?~?r zPNw8Z*xq{qmUgJ=iP=XEaq$ll8rPIz9^cCl9J^M$cLo4TO?OD7Ln8a%3AP;8B|rI? zKAEPSXCz466IO5v2j>1W)6#Ko#Q<4_c1`_KaL=zzMJrU0Exg@2iZ3j4NSsk-+|52r z?UCe*JB**M-W4v1AB80JO~90HNxn27-?_lWT@qFRid%SnT9T8h0;mYmvtYg!H(}f4 z9H4imB{_G7UaRG*R#EWS)kA# zebhYMb$6t#GeZ}Q4QPHukje47>-?U-(uWldG`tX{jj&1AvI+vdLZYP*ap9G$nB#1x zsRp+>O5_(RTL0{{c#jQ5F%m#lX`*`jG~uih%n_B*AcLortfJovkPi~LE2H0hL@fc; z$rWyI{nQ#sc2o_}pd@LNnN8l+d|5@#f?%ve;+80@Tg@bu>J(Z7|N68f7sLjrn3H~} zu((Vv7|za&B4;as?~-_McLAsvL07MlIMTBw-9Vt zE?%#vo>|AXW}khUl%NT62l%*$O5v@deW>`))v~Z>x^`ZWpy@Wh#65gm=cDM`r!^V2 z&srlLD{2Bzo2GsbG7I!gMXw5L(aRavs@`4(vq6!AYkAfyH}B5B=linfnh4rgh_@v+ zKu4~0Y{B=6czcP&a`xRrSPr@pc*aQPQw%^3Fl3)ELV9ltQIyDpX{vamZYV7 zOMag^K-Rie^=1m@L6A|q8YJ5_LvF=(Hl4O!ZY=vKbhiL#03@d?>=j$Nm5%beZ8-um zce-r3WH4v6TW_(Qj8o6FWB#njk+t4(1?nUyn{#3}icwZ7u1vdjUZ60~rTJLfZ`G)o z+?b$wTo;%3R#JU;n=LjJ)DzSj-HS{&$PI?X5rsR7^0yiT&t)vxZ~v^J@Yb>T7Rf&J z3N7ie`=GdyQLX+Iz3vc~>|8-l1oJsi2P82lUs)7#pnZb87$6UTc}~b(Wt&>T>`}OS z&fT>}lIK=p$8H-zVNSH_jeEi7y%e*b5IBXuw8~iqaZ_5nzYW!!p{c0>I#=>Ei@iTe zHvdlpREcvtWasD{=L3%Ya)7^5k?*Bt(fv`!`OHO7RL8>Prs=}Nd*qtPe?9bn2T-K| z*8%!095pIk)sd91M^HV2;>BA%g6a`ekDz!6)FUV!e)SwwkDz!F^j|}R?{@#a@8SRe N002ovPDHLkV1mMwI#vJx literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/home/wx_close.png b/circle_app/assets/images/home/wx_close.png new file mode 100644 index 0000000000000000000000000000000000000000..30fb55f75c02f39caa4f319735d31089cb456ba1 GIT binary patch literal 5377 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�v0NSdJEJ>xEcSU?23>A!m8rBc7_-2~ z_OCN09AlWGnyaZQSBT$VMDDt}fIwCG^39Y=^7HX)5jjXz2}lOdAMZ0pdp_fNDTAkw zQ69c@o(Hhppbxn(LB!+!#lh6k-F40Zc`t|997q#QRhhzDrHNfCH=V(KYptZ~^{J|S z0j%1@_r4+`Lmg+$ueo=x-fa|e6C~-d=_C98aX^Hi#{n9<@(@N)T$Y2csYGGa1EEAs zz<_G}&L$U*FQ3PUk9lhEj+VAR^p?6A1xf)*8Z~kNr6Ots8_6Nyao)Y z;eL$%q#(!rblck~knqCs`xcD7H!gTH9n|}J+!7;^ze8X)_S={HOVd|C&}AT>6FH(L z?_^#lYeC&V1vyE=mlsNqWb$C3bMM624;l$KO|i+a0Ub_CU_!)6X+RpQ66jP+T=Kt^ z#!}TU0Qj>78ZMfxOwG0_NOBVJFvn-cafVk zZRJu+DX4LO9~c#KC(>?1HrK0tFdL1O^BDECtw&E>K9AhL0m%=H2$j=i9K$;wLRMc| z4jVF`Gs_8E(6%ASX>ZR@nbYkHI0pfpG+h;#+@`TlOE3sCtU!m8;yUe5V^sq>KC<&a zlg3h2ruU|3$&-#f;33c;pdj?n1d&EKsBNqaAd${`L1!6YWL$Eb8w*}y3s@>a69JF~ zJQn=8NRQ*>q`;*=ijzig7}c>Li=f8>B;MWZ+m4GIMhA>s%8S$kK`Fvz>wHg`iW|^; zxhX^8d!Hx6!3s2Z2NxHHz zLd1xUeNd_@`>MqS;?=;FW6df_08A^8%v)Yzs_N<ZIVva(isl31R^cP)Z8#3JMce`}(&AaAhiw-&f8((L}T+%e65@L@ZB2RT*_7xXhaN z%F=(MZB7@Fngndswevt{!KJM%=cb&Ra-b$afSjbHV^2`7!r7@zR}JLx4CeMEi2rHO zv5m--GGK}Hv|R$U-V%eW+kVcEBY%+$9q@{JAe2MNk^7%%10p%;QCpxRlb4xr$!{yu zRgC1MZN2~Fv>yMInfMFvmKFTvEE@ID) zaRW<;^-a}o-U3{kd0^zq#eH9l^6;|~Q(tZY=RUK)TM%PId}&&WRpx%tmsWjMR%N;L zR$7woz9WtN@D}eW;HY&^l({N{RFxG*w=xHx@y_E*kGz!s2A_vdE{^Xrfjx zE~{5o{;4X*{->dK=*zvoud0klu|jJ>YUE<^cxzU!-22t{4{pn~{i2xkGVW^G{0_9l z=xFVbo@n-7MUCzcO~JH=ZJHDljav(!2IQAUk``MTMR4RJE3NrF3Z*lo(ulz&gkL5RWtf&9lAb(&?ID@dF^2h4hX-m*qOTF4EdBv_(FR6&Lh5W3YN$VyekT zPxvIW6;TzDnfK!eTX&A@uNL{>8C@9(&Q(ncu%u(67^95V@Dy8eGJ#H%1W4plP#NdB zH)ZV{3sNj_aS=D71;%#{XTwI5^HP8$VnTWAkPlI zaa5Ig`hPaDLYpKqFnTpVZ$?#J5db*}%VhW-rg&I_O=5M`Rwb3gv%#tkzAzaLVfEQx zM5N4vP}PG0{LDWEEBj^m{#(8@y4v>we-E@?zE z!@SknEff)(V|@_`0Tc{kMqJgk(CKwgpb z1_*922*+B~+fQartFB z&5ZM-*mkaTRmC6#D3)e-eCN6Ie=sQw&8O0IRpmJ6E70K=i3V75gZtkdyXzlD!C2+j zx!V6i8jCN*n7TGTI>JlFZR481ef9F@soc_ns-hZrp zv(zb#u61vG833aZ)n3Z8>gml4LgN#hBjuM#kf-wb@@qWXH-6RrLk{yH)&+ zk*8)}fCQO*Q4#djlX;!Tp$}>In?yrxd{&Sw>v=q`BFiLThAENKrRz`G{J^Xue)_^2-!KLrQ(<`4 zS5evYRV?joE$Hd%{rVaQ?Nd`rBwADOU7k+%dR&FVU1j!7U|}{4Pd?+^;b1jL}x6yxY!3B*CDqwCCyOp zJJagpSf|W3XzO(RpAtn0Doe@-l(REGDQGkODYRN8@8l2l{#j6*D6;oLseWHGl9Ntq zBJrEIeEEY9AKPLXri!bz`3`iTf+g3ThOxW-4ieM`l#6m2OZ#+nwBWg@%SUm1rIk-t z*~pHM^8BY`W#J29K%4orjx`0mqzSsp6;zA_Riu|}Jw=Ss<#bgl638@E<+hHm!-&q? z1VeG`c#=$Qd0vhpQA<*;BqKBGohW{`-pMY%Uafge4OSvmllkY#Cuy-#u!$?+YWfcZ z#J>jc-QkorS5@*>K2;@}Qtfc~BEMBcs)qJ`Ulci`UJbXU9Q}Y}QB_6>SOLY7dzO~} zKvl`V8cc@d+_36|Ppi4KAUHTapuO-U!QtR`qVIbYfWLV);zlo>dY_*!B4v#iZs>{E zEX}1dGxcex#9DRXQmtb@{_Q-_9FW4Emw^t`zH=RKWxxM8@Xcu=*bqFuHj3kjyo#vW5+-KFEKj7K7cJ5m=#zo{U$1kA6@U1tt=nwpJ(5>T_C!vffgw{ z2ou3@BTGPzl|q8~AUv#?lvG$vm6nRT5_DEyB_@b}X+&ow1X8?OB$k969-Hm(6%eAi z&?Hx`wCCZh0Il0p^&kKj&0}=1@;k@};@XKRYg_W0p)rlRk%-KtEv2d??{f{76^Okf zB6Y!4QMY)>Ao#c!C-Q`2%eUc4;cPw~qHDbbOFyhIb68GJvM_6oop>PEtS$;;ym(+g zkH=W>;)DXJfg_>9+>nzqDY^*Nvq;nQT0Ks9kQG)GAM`?lDPPC`yC2+mjUDdm6_iu` z9*P#~d4cTCMbbjo8iE`vx*K4|jbFj6CpYo}opT@Ne+B3)vF;=I*lxeC3v?=mw#cQi zdb>*7x3-0UEp-p9ejR62(@qIYru}h^naY3iI>q!17um@z5G!Q&w( zfjk$A3syFc>oxyEsg`;m*dkGu+?K)I9?lh0fWK2!zC>ygYP~)W`3Z-3;`88nVCgVZ zX#Xc7WqlyNGArl9^DCP1k+P{F4-Oeso0qiOP|kb3efZX)9Y$3>r2D_|pY=n*-73iv zb`k9fzO0;LnRtTewoNWrlac^c+heCZ@}~g!BFV^B1Tf{+xN`9~);)1sYRKTpb8fq$ zqor-XV(iJt6=dR+bQ~om%dfHA91EPRGO`WV5=7-faRlWG0<%k*xzG9CZEYdCinBLg zdADO9$U2e!d~f9iB5CPCI}b+l_}^e+e7$a&ej+&8A(a`k( zTiuE))osT_NS*}DXkRJi1pr-{xC1o!eGbX7K<9rbD(Llc<`N04uAP$t6938^a-mYP%L*p`#~N+}!F@zqz1*zor>I+IpZIo%!p-Bo2-AmcQ495|{V zB>TS?G{JuBpWd8=|9}fpmAoDb;x%f#+xg<5lz(MQ?KAkd`Sm-^Cyx-3dO9?WaIoZ= zCH8#K@;_=vF@jTzSj`s&SJD6Qk*!8^ko9xU(Vil5o9F*9byce|0>zgDUvi(UveCsN zLJm>grm6&U6nM+p2qgG&TiBXBbnvTZ!Qi`|fLs;{ByecSg(xO{M}@i4pNk^?ycg{2 zzcp$tt#`(HFF!uzf$!#n;Oq!Ry8=nY11aPOiD!m!yx!U;e&)@8opP2J7>A9|28dz2NoFrc@>q3ZLexI&KI4|n9n+fzb zK{(PYAXijekvJSM-tr?LygfwzPSU)qi3ZNCn4BsjyR!3CIoVj8n0!%W%5{;R`Pl%u zoA^3#;Kl+SFAz8|E#*LsRY>;V@5ss(B7&(!1pi(zFkcnf<+`jVX+hX7OC%>9r;F$; zWI)Hh!4@%5!NLc6MQE@eb#N*P$W8;tm4LV81ch$wKXNUZOH<{3p;r}9AeohHU3sh2FodMNw{RFKcnG^NETkNX{6n#iu}pIKXL zq}~mpYSo>|^Ppt>g5DS^uWPlSsw5*4I1m_R37s?ALbYphaA+GbT#YHDjaeG4ssu0t z#5ya!gaqmFo=3vSO|=mI86rZBn?^u~b__L1+EsQQ;7jC1=ICogQus&Vy38dqc^}`Y zcc2d*`oc(2bFT>2D+3+JiRt%@GRX&|=?gO$mT2siKaIYZhi+Dqc$?OI{<=caTjuu= zq&OmR^q~gHHtQbs*{7zTe`7%c&3i#VTSaAw#y%QD@Z-}@E{ekxnEjmKr))i8$H4cW zjU4fP$gr%B>bSD>xM!u$9X~AhUDqaq^M=-e}s$ttMkp1H$eqVNZK4{X^}`xyH^Imf%?0{FO&ZBbMGDhM zRE3~nmmt_hYKO5;D4 zb}tOAroUBr6;WSEZSXOYXTXp@LD2v+!(o_=vfV)gK|hkPsb51LPc<*ChE--2$4)cQ zW(d!$v?-f;dTzyV&qK3QNwe1T>h1LKq0j8r(K_meIi*=;FDtK|LvX=Ji6I}B;Dp*Z z1R}-@1i~b?@E=UlPf{$J?`lYu&=(v5=6^fj1Yvz~o%0wK_9 z5d^K3K*{lgtlF~oyfQrs=@kS92u7uTT7&jUeYa*7Q2gWw*{!ZHWTUzHZ+)IMT~#@r zg&ycEjA<-Y9T|1wzOWtZ+O?_zr4NDF+A=t88=Eq+k(Jbg%08Ep5iOoKXn^yoT`$LJpB%HdH?_*07*naRG=!W z!9JT*nt7@!_hla+Wuw7pHBYhfm>xOe*=LQBH4=$D=x_#_&eJM+S|nK-MwhFIn7DVO zwPQ#MBG_-8?``*o>F3kX)cbsc1EGsGUPzkgw1}OWvRqm43ebPN!6>+-rC)yl5n^VJdX9dW!b} zpFCM2n(UuZ73%Wv9%7YRO^vFG!B8lZ95h?tpsK7+Y=&6-3lTYFFwbo8!K!YUi!thQ zLGV?su2TTxm5&Kf__z0ZP+FrM?f24EoGSy*pYg!PnR@a>8RRQO1*-`LQje!NCzO+| z-j(XPjBYL)BRoAo@I~j%Vk1Nh6$&+cyqPCIIMX111wbo{wi}XuQNfComK%$}ya^On z5!tmFPF=%mVSa4TY$PWg!$J>qcpwW~8cVx$bfkDv6O6G0VVjz=kAu{fp-lRBgr zcIm6scrzD3`U=UBqc;vNc;{gq(;nc>E+!tlm4jC>E(;A>`-sHq+}xmjxR@eS7OZd; zQ1bK}E(}X9O%V6SV(VhbCQw|eF-Ey^bfOza0q`ozmQ!RuQ#`%l*+RdrrkkoVRYS6E zGv&xlf6p-O(9rNwRktT+Q9gdAZ8y5rKu{%QH@u@ zimL4^HGgW&r>ZgT5=2WHWA-P3)Vu3CA~1=>R*^F~W}V|cecn^&-turh3^tA^^jAR?HUVF7 z@ppqTc`FRVs|sLZ96C+$ZLM6Wb#!-gnnrREWC%ZIN6iewlz&a z{Wz#bo;78~^z!Z^!ZMD!ZKiI~xg@*ufAQ~sq0 zS8jB!RP$hJc)hFYHvv%VrBUN^HEw|+y9`UmXxY8!axoa zqbI|{>8aGPQPrh9IX{coA1l+i)T6*)R@HT0Z`+Cp4M!U`)z2>%qx39bmh?VWHf5Fi zRI$iALGb5LerxSZN;>I|5V;-sz^Wt%b9*P|ryJ+xN7M+*+*HpW8-uz_!AKub@_Zdj zKIZq3$o%#!gljA%d(SHAb?1f1AC*}3&ugn9SPa6&;T~#@h zMGELFENQIncXi_tOXA_e`>76%eeRW`F=a8o)LGo>*Lcq=Z_wG^CYbRimRoISdFRc$ z;zROzb5Vh7a_2VgL8l&!`+ za^~HiSgLKrQ&y?iD;}rmB}R1;#P^Q)uzlyAr9Sw|h}Qh2eNk^>Nyxq|oLn6d{f!36 z$Bn_3_U5ZB2X|!R_f+EzR@>*>ufO`2pX{b6#eqdgv5l+5F~Lwtf_(1z6+ivm7hd_l z(>}XIN9#@9eUAL>I6l_mSvos%_;7Y%{EFM1MK}1mO;ve)4=Ke}qhmYgs!E9j&OH|i zr`M1<7~I8i{(57&D{Er}Gjl~)pMLh^EeKw6DmIo+Q#R`4ZO$l75jdemeq+;ZkseqS zn4C)~mDP*Mr6CxZ-3yHGlyhtPh*dj?l3ui3h_<`vZ&gV`PL-LRzg6%+C||bzR;quw z3CMkxW$x74Av{j2wcJmp&*IZXwyx>zm31=b*LL#~$w|kwNC6!l)WVR)D!iwA=iBgy zzAhhuDRXjsG{VPDR-Y z0Xi!Q2Xd&kYRSqK(VMiCy@G&T{+zs_IO=yocNJm$o}^roPQa5lke=RXhfRN$Yg+c) zuM8PcXw*0>hl>awunTlk)w3yPm~oKg792#Y3soh7mqgy-YR`$tnhk^y`NVr%M65tu z9j~c}M5I>5R(ZUt`UL>LucGHu>zMem*-xaO+oh@$Q2eMG=YzUFHLFmjO_??Vy;#PC zyrEbqSJB#lob>jsbK;JSRN<)~-T8q?L>p=*k3ENnE0Wm2Brilk?~a{qAM1^}-e0CW z7i(+2Mf-{$N*W3r(cAWZVVRz1A<0T4HoGW}Ekn0ArkG^LmDAr{@oVdLt`-Ktb1HF< zB_vl6l}UtYo+ew+%kdO6UsRh$84&_`iox~-8@hgsYMm)~~nY#042;6134BVSAA+>q=!bHOOJycsM|geWop9sjJE zZd|0LU-!oGX;kJQvgx6smJ&%4E4}JU$ZZ72`B(8L{i{f9Hfpw3#g=7awAbOWB7qfJ zKdpgaR!?EgEq~GaT(j4?s{R1L_cH892kFh~`OswOW4>?Vh03V@%+v=%!i`9|mHZf1 z`3z7Tp2q=SDdN(JgXQrD_v_{I=@MP5`l7CwTH2qg@|dYwomJhq>;O+fs86>!uH{GA zIA66~>HnL;rf2dkEn6(P?peIo>NZtn30T(DY@_b@ zxpfU!C3nS&Y0j_4^wt+eq^YQIQ9plv4&f0DYWIVTG^*oxHzJqX#b>MsPcaBib*12p z;Ph8!`REJd;N6CXWLDkSkqT1xb6-8x89~-o^Tn7o(oLteOD_tqZx9?sO4qB};qfR^8*D4PEOL zr$TW+Y(b6l$0|pIY&kkPIx2Z1Snq=R9x=5}fU5E)tC=RK*zaKx*|gCM`@eCbv%UaT zl`G>$nmBx^Y(cJosJxrxo98^0*&H= z$PHy?iZt@Qh`5T!p^EG#1dV- z@@~iM`|8bS{V<<1$4Ay>ml2xSla+0Ht2aTi*NWSpam$wXC!Y*Y~kg zan|Gx&E@wPv);Ki9n1ZBBH5SZ^jeKi2S#a|F=tIpUHQDGI`;f%teD(TMCd`+R4eK3 z_lC%A<@}EsJ?Sq4r{^JE~Gu4m7re(U}K!RAhb-T@MVnKZ@Zs-03N^8sb&Wxpzg zDfI#4+T}<~(pSBz9gsOB7FUV^ru{Qgq>wHnU$R7O)mugbZSN>pkXx?y@@mR1A|+_rb++exH8Io-k=zjPFeYL$9@0x+s?Qy5ZNPPddm}yM4Qrdp`tL;-o)%vtdgLg1l{??&stMNh7`R}-HU6{w1nHM3_Jb}(^fH(D?+(+lIo!& zV14(onOG(PUT8bipHsaz4&N9QmtS@qyedeqF`s+acN}i<(u|FG` zalTnhoh8?a?D<6xbUqEV-A41zfm%NN4l6jw?|9S5CXC`PFm1R&j-87|ICTYM1aX4X zMo+k8$^vs12MuKQGrF_}cnAqrO$Gi^??M*#Fpzc+4N09Ws}~WPi4u&kl8X+`!_f%HSgz|=gv!b; zmTgySOhZujhf2=X&c(qZ(y-iHRq3-u&dp%2u3E>#vfj^%$i04Fa(l?}SrA%H5xIYz zb=TJu(Mv>>wNthV%12pT>3G>Ys-hI!Rs;JgCvUWAE3o|jsjUO|Z*2+DS1g>q>cm4% zef7Ev_e%&KO_F1!6|1gn$|``iQ&S%t^z{A>~VbGomp z{-2M|HR_I^vto)-T}Bs3M4ulr6Ac9*YYntd_gbw5!3&;8`|3NCYhfDyZh9Kg9jqL*DOFngwHtAXBC z+=GR0(S9PkUB&HV{l6m&^5?tdZ>p5+fRq~-l|!PtjBK*NSg*V{ebU-tE}R}kTzO}? zY_e^$$O4^(0p#!$b-$uxqdvT>F}t!^#ey z{LyVk8mcB+;Xel$SS`hWS8CH(H*#AU<+gJofBl4HSBmZg1RZ_CsTy~*<)o|B_oY?$ zIP}_AuRni^2u`I#d1dK2`x!BUWmQ=5uQR8;x#j4!UWd^!WqlnBwmjG|I%CXc=Pv)w zw8OV-YYpz}Ef)Ko(rx-GR>S3s;LxSkzNDTPnwlvveAkF>!ab{V^=x!F{T0uHs4NcY|+K=?bd4P1?BWx9!ry*4RAKhYu=O;9c;{t5nlRtk-Jkhawv^_1qrn9A@2b=Cj}UyhO>L z#8@wjVQGsb(CKK;p{qMupd&fy*?aE=U13xUUjJ~G)6Q{`5~pUIl7xx9;~1Adli=X( zwvz!N<=3v)$w>5KsIYd>>*aWbkLa#}tFG-T1O zl|<#V7E@d#IrIK3yPUTLg6;^Dw)nMN(acrp{frnzXjrn`OuzqyZ5djpf@?jF0$&Cs z71y;8@MHb8h#aJQ+I-hWKpQ)F_VwfjD`+56RUfz zAEwo)5Zw%~V}73QmdZ-7^ow+gntyfNdQlLVgRPn|!3i-=;8i)PjLaN##osN6aj7Z` zhJ>X7CN<;iH`#PxD8>?2opXaD=Pn@9XSF!D|7T5TQ1`CZIMC0Jr)UOF~8 zUS9j_NvnpTJ|ret+5;``d!@oijhf{4WjDNF=lA}3=;T~ZE-gf*viYdf(Medt(3dmV zd*teuH&o{KrkgyFnt;StQ)Y?Oa&o%UzPuT3Gp{(NOB;Ppm&m|HVlx*`q!TX1a$w|-7yZ_WZm*~W`R5fS0|<4e4%y6^O84{V*NH8$K~{WRhs*cx3PUL0`)?fx+&H#wmYCSWy)i`j*H4{@6C(UvzC%OL93mAf`xGn$}9qJ&n#5L^~|G z+V6%E^&8S8`}0muD#|J}Ye7IHLDKYPB2unQ8uCEu>{!x$o;EOR^+#V^RL21nOEi8Y zKxrpnWE3O*OMr04)aRtla{%+|XZw-Y@9qe5-J5Am6kLrAU7> zNg%%hC^Ko(VT{u7YO`r5#AL zFmZm&YrQ_-d+LD0)!@gT!97o3zeoX{g$?BJ%)R@Bey_a+Kj`hD{e!QX@+qNII8aq+ z%y7`y9R@~BxUzip6UomE%(qwy?jkf!shAa5)(*m_r}!+5iueunZ#1UQAY-P~!ZBKk zVq=_dl}lYYpu~^I2awGoI-aM*Wr7@*0Q)j?Uv{2oK~~)In&v7QRFx}7rguK-){GYq z$679jt~YR1Wn|+M84k{-NK}<8n8_Ko&$0X-EFrPp^Ry|@;LHx$Ekj{`C`WfV}= zBF#qlzk42x^}wPjk%^afvL-RJ&30c0PKd1>IT@0?Y+B-tOF=OXi{al)pzHG1cF`bL z3eHNdVpO_o`K{01;q3>H*;j!}MUuSL*Ri0>5uaOI1;tY7kY(2UHox8CTruPa+|G&yfgZ|;RPNkAV;qoFZ*H&+g2=dAmv9+XSa{b~X; z)_^`AslI$l0=A0CzYWkg8R%Rh0i&p9ObUwnUBewXGIEkHK|kkIgWMDb$Q^JYXi33N zK##M@p?u@F9A~V*Im;kCu1Z;XN;KvY`FnxvN+LK^?;fKFo&aQYb?XPKq^yF{iXs~{ zU4fQ$?uNRZ7y3~f*->09M)LEL##&^6&cc+gsyzAcJ+4>eL+nRYW6RN@^@Fpqai!rd z;yovcvFGwT%K($Z*QaV*r1*mYcC(^>P8g6PfzA{(^~Q2a##U#He;Og9h@j4 z)c&d2RFzyCk}9*v*V`1yFbl9Tt+oR_t||wqs^riR=wzvoBUoA^Yc$7$m1aGvricgy z;ufe@PeW(Qlqu%R%d9&pN9mNbl?@PTTP8)NQg41_;dl8^K3Ad=r(uMKs3;-ODD!Ff zyCS*2rx@HowwX(KRV{^hmSm31m`;UaxW(6 z9mz+u8T9lPHyXX}C6B)U?BrJ<$v78rBIn0~9LFgRk~fxIX)3K0>NYR$z`V!2lqC}- zkkCy1tf55kUhv#LRw>TQIC!i!GL)Kv4nFvTes%2t=I?X??~jP|dsne~36PTmx$umF z9K5o>L9 zS{rf6QYVYmopt3u7cFy(-?FmOL96StBZWUQSx^WPg^cr`|6Wi(8NTe9M6F z>`PO1i7>&Ps@TZ7mV1%FiW2iwDA1Raixmbe104@~tiKkSKPk9LtFJ7WaSKnTs?sVe zCu~U6WHsz1j`7%t61LyykM%h#^X*QUhmO6tT{AgqhK1>rOi{CXK!-dN@=a=$bEo?j zMZ^-2Rh8+X;o>VX<+K)!4hI1pKH(UVIv~TeT_hr`ip$)F5S99ph+ONB|1+N8IvgCO z%ww*yAz!>VWic;p=1X3^`uvY~F4Ota?4EARuTf*|9V$!F?FvVX#)*l(yW$R0&VTc+ z6IW_&%fHfBDwTl=)o!?I>1Yqp-Pb#D%qAE9;q7UMofm|9lp?mNFPFM<;Hk4Cz=yNr zF-hyJq*dFd!z80EN!s#qEMEvLEmzTLBbUF{zJwcG+Z6Mwd;K@+V*&j9B$2tP0q(lo zZ|@j#6(D&ZovA1-x1gjLBiXM-esWEu$9*F}{#UUjEthQ{Y_*j^3yLV6+9D^=)&j9! zFkK*Pr{&>kO3IUs-z@^0waWf4sZJf8ApVyiT$W_zG+i}_6#Y&QO6zsVXUTbk>Ob~U z=v9DeO-t4X_0RD=2IRLFS+y?La6vd%^P0w5=z-3{403n@z5l4vy}T^&R~8IR%{>{J ziS_MbQPx~#4;fH){N_|0-B-dBsu)WEGeFR0jO++^K#BA#F)DjnTvAuqBp3|YP-D>($sp`JuH8faBlP^I7PwOO|wW;d8 z0Jh4yy^k0@?}1LU`!?}4O>fF`TrQPvdhbCyOr5${uyJnlM~%UHtkB}AB)G7`eic<$ z^s$aL{#(i5GplSjrEkXFCvMp}GIw8BZ*LmSA&Hs$$r2-T_+WNnlQHe1o|svB=l6lZ zo>pbla(z5c$EVdst$w9^@Z7%ZNj|w7&{6#nBv<7XgoIDgWgTN~Xb6B+^-wPfF|U!7 zd7akb+)9%$tI?mC3hJy=DVo#G{Gzw;D`Brj3L3&U)O) z4y>xQP4$6;6W}6YEubrD_vWK%X}Kjw-ynE*qR8fhJWPgjTIap5;YedG)IeupO;@F- z{+)+)OlKS3oI@fqvrSx#c{lLXkkhB1-mZ_fh5!H{07*naR9NA2GFM3XmEY)CF_=+e z+Ny#xV|h9>?{v{2w1xq-BTC#N-F^6WQo`?BatOMMbEG}rp=3gI7v|W9ReMW^t#Yt} z4P8JRIXr^*=JdIgSn8T?{kEK_piOBpI*u4W-C`;ZclEIgezWMTzvP-8FWWXT>T)@B zy?s=bLTTgN!;BY!6cQ*)kOhTSbOC>_!6eaO2X z^p~sKNRk&9w3)vPM7BFJJx!?DyScL0W+Fb^SsJ(WTej-t9($a!U zyL+7GSOvGom4|!2PHQOW>5lgYf*1LWEmah#MvQ15b0 zd?!;vR9CGl>Zhs)1Gp$ddE~Joa;~cG2H+2Myo1WsNq*d42XIN9sLT~2GO5;asp^AX z9I)CZtYrB@trc#aKA9Ht{sx(5l*XA9RZP#tf&!Eo%I7(@X@J3P+Qk>=I$M)v+w%GT z@s60g%DQ!=nZ4|G-=6cB$avNHv>@2}{!-XQv9YoMcpM4nVjL{7DOn3{?;mp4*MN_Q?f?hiZ7 zdVR022$IVYB>6ODmPUU@j4;w$Dr`1liQ8+b9jE7rAeO1#`RPTK>EapAjVb|mWxuL> zwZ&NS8Uyor(#$KAj?+jALC=eUoIPIkVtX%`?Tnh6yLF?y4zCEX; z7i}q!TLjVxgae4kEG-AjpGEfBlVeHr+D8T92B~M2FF*I(9|9?^bxIqGZ2g#fHcZb0 zy_W;#E3V4I5|6D4vl|zywru(ONr8NPu1enFoY(o$*HF?}3nkE56hICyfVc0Bztz%e zeqLbtc7=km*SxXdhZwwA#D(Mb6cYE!?cY}=_qMmlR$bkU1zGNmPdTM!=8nuvaKh4# z*1%PhrcUK4sW{c^=?7UZK@vqkPm#*>4&X55#b^_wPR>uO|MxZ{=q>8K+g@+Bsdiyk zsHo15>%Q4O&k~WcfoMjHhRW|4066Nr^nVPXyuzw8Nb2$Y)w`BcsI3+`yIh^*9%jnE z`5m>|AtF*!_^kn#hD%4fiBsV?b5m7Tm<`bFX|VHMB4SlpeZ|#WqH~$Qe0Vn`(Ule- zRQ#Q*y*%~uF-cVVKb2%XC$g7TO*v9AQ$chK7o%6KwA(S0|8wivJG8U}clH$vyrFGW zhT05X9MIlyLC7F!eBb+{T6UZ;VTvsew$F%%4|`zLlC7JSVsdo)`8>Ua5-kUIm$3A_ zfw?XWu~rmEUYyYD^Vn*xL|a;o^u?u341!lgN>8+R$k-~Q+c!G+hw`Gvu(?}$uEBK_sQV$;VaS6TAyw$1ZeI4h8^d~do=&99AI!Si@3 zfJz$8;RO{Gjci>O8dbfmU9mKY&YyNjyuTFQMUO17qA1frBC9mRPs}!(^Kq-8rm+?} zptG>2t17R7cka{60>PxH1dT0E##Kt$iYXsG$pxV5@P6a=BpI&1y?90PDiW+z1}J4t zj_ZSU}gHZxh>fS=QhCY&EMPahr&cG+Xawz*sV)EsVM}YU8LXtEwjf z_V?rFMvZDUYTs1VLs3wh z5KZaN^QWvk&gbp!^R^T=lUuF5bj>fmWlZu@m?Ur&Ojgy{-NZIRW10SO5Mt{D@o$3w zt1y~lL4^fIyh)itb^F02eX9C}k8N?z09~n>j~%fOq{xCDPtmefRe~I56z9DC;E0i< z9)rOeu3X$&OgPRDS3lmC!l$`j>Wo^}>F$VDkBfzMVKm9xK4YfDNI%K7jl8SjOV5h{ zvM8dFQSE#_MZ?SCx+l5aKz53)(l8|9we0k4QVxu^1du`jJDVOnngsZG0oVlZ;}Yq> zD;nz5Pjr@RuE1TC*}V*H}nCK84Gm0+j(m8S&rOT@^b2TRk2@LS4V-i zP|#bz#O-bpre5Z1s!Eb=R!e~Se0x}etpzuHu>fe6aQYJwIlSH=y=p9_@f(qHXZtd5 z>VeP%v1Y0Xz}_N4p+b(E=>zg}>KP`Et(AIFRYtVxmdDf09KfdrS8X*o?q?Y@CwnEXnw+%m7VfhPbYe4Zp$J^l%QY6r) zuTo`Z2c&rCAKtml%|q3!u`{YlZ!haf)kqeCao^)8teNqA4&ICe*|s6>%cvq3Ry=== z&N*joW-T{!)x$Off@v{IDhPerryo27Xhi|h>a!8Pxirj6fLWG=0|FhEmJ@z@VAK^L z*hS<}+N02*^IRY}n(Ic-_bK-+7$JbJDYE->vEFc@L3kKtCmkmzjTAY}9oje~C>|cj z7Sx~e=jf^B6v?v!v!vhN1Fz7VUh$`VDA27$#?4ou#UY-*%)4bxV>zJn70h~aBgZMP z(wJb3H9l>dYdULsW7fTx{x-2|N+7|hc12UA(J5rf4eoz;?5=+p1!EnI=W2@@$l(FL zd3Q1ciHu1_`kcK&xy;;w4ySMPQj%bW&Q`R{?!tYguAYgewe7i_NXGzOn+n^AatV3a ze3PZ>-iUKh3ajG#?E=sFT9t(Z=kmm=1UWno+U?Bl!zSC_D34S-cdAOSmf`ep%6uaX z+K^W`%{Z+q*|pBL>!x-Ns>(_( zuKa1hS^b`}MZH>)in0*?lmp8h8iu&y%a>$?W%EkM&Zm4_1 zlJNwl7|QosRDZB(jQDmzFtT5X*r_Jda={>YN05vcIc)X|`jeKAW5ksP;g|b$aV-DG zs~mSiWEVSciQe?II7MblDt4Y$1W?Z5Tr3tWt|hYhv+1#@{&RVt^FInccHNjAA-bGS zBS?A+D6A#2%5WJ7H=4>}|GcR*RwD76w|x174UbBT65uL+j3TpGV9ObNebJBP&jPzglN{DYXg4s-S^y*D#AJNgCJHLmD zpJfMg=TdH~ntTeWTxk_lrmSM*b4+ky?PWH+Aae?}>-Def3Fx(n_2BfD64b<@eU`1v z;yvkAkDU^;eGs&^0X>E2jP}lZ7(JVBO;v9NP&d6>=gS#M+(Ja&Q`MCLuqu*2hte3C zW2(BT%E8JnD(PW&ga~&e@1{Qmnqk1z9Jf|sSnbfDst0$*bT*Q&D2+T$zn=-;_ zo9g2`0i$kLFev5#S-)F)8r3mxh>AaQ@64A9*xVTGoW%J0 z0M~MF0pWQ%mQ3u7JzYvGFOa^z_<->TgM4VJwq~tIl$(C}WZ&-xiuep=;IF)<=e|biU%+;`RHFjH=t!4w+HVtt(T8s!AU$ z+L$bvb&dvYce;o)8?`NW5$oY^8HCF@^b7~-`oF400=NXuzoW^vS z@M|M50djmWR~U3&Hd+xp4g||P4v$M;5%7?R93#0WlrL!YrQh9Oq2(&4 z=o}C9>?5+BbvS2>^=VsGbea&>K+ zs{RN-<_L}7jjLgoDa_DO)s3cmrW&o#a@ ztr9AeH5&|$Ad2JS_%gNs+%e_rCQL4YA%BHx$Ihjkp-~g0kroGb%26Mi>cW4t7;Q3o zqhDq6mg;(QuhB`Q{|EzJEs@w6ca{~76YG5yC&^EJSME;h(Y7P{?t)g z#bhu75&CuvvC{o9-nk(_u#?l;Nz2fkNS~lhBJ^#UlW%!`&eSoA!YhiPrBXvDB_by% z{W6f8iKy(Vg1caC_GrI*~i>qSK;rWM4-HF8fMg;it z>^=v)X!+n$U|uND>+vue8&V#tfR(qnMFRtfoj9#l<41h+NC#NOmzI>Yixf#tM_J4_p&{?`}Q&ox+ zvg~+7qiy}?*ON>wBCIwdh-39fqf}qoHKQ&J)o0P&;hTp5Dr*#r{1rx;s%q#|J2pnn z-n#FkC&VP{IHz(h&Uqv8j!B)%9pLe*##mxxh}k`*9hRB!OQtLvHX2KI&6xRA7-Ef> zWIpRmPB5h+G!k`HUj@X$nh5(2G=ZFGc{{8Ce#zBLRM%o2rs4 zMt&CkubOG8neJ&KQj-A64(Cyei+PG8M8sA+Wo<=0a+4fd9!mK+p65b-izge0=!34* z2Gf@y_k_TV?RPgXb7O2YMdZLTS4s7%wSbXNC+I6Xpr?R`MC2I7$pLn~GQk~J8w3;k z`*h{)DNjdXiV1X5C>sxmJ|_D7LxTJ!&cTo|y}{+>yhRK9i!3u=%}}$>^KfrhHH~F~ zPBM9!371=wRDzwLu=G6va+{`UtYHN@mFcR=1FQr(i&7*fJ;pcgh$eN62rldHCb^iz zKx@Ci=c47qRB~u6z#z_XZsfMKo6o2yLUGMQoG%jFi|6RFeX92eWG#ZHN{4X=Zfw7N z8Vc7I#Yk`5~f2EKDmn3@Ab~hLb+%1sJlYvRr zB^kKZ%aAX=tS{yCIBiO((Lt*!Q;YQ~sMrMoKFN}QQB`g`S30udd%h_m<(HDGX3^+j z+?t+T_93XMOp)fWEZE-Fss>BC?C0@mOB{OW#G_kT?fgX;NlY|8|kuwWX|;RDRoH`-OI0zD>? zZEICoeUy{0s^pX~ZIm@t(adm<7NO@&{idocZ)JL^USo>nGa~YUs`8~@FC93*heuVJ zcC1&S#qTYrU{sZW?j8Wu3>$e~nWiBZqFSTm?;avDK;LEXhC`@eJ5EHHN+Sr%sv_NJ z>WAa=e~HLCL+R+9hmJlo--;6orBYeA&+=u`((`_Oo!4TKPmNylvU=&t@({Y;-R+Dd z(G#o~VP*O&uzfR{L$1hWtt0++Ab|{bER;5T(imMwC~9uGJhp6s7{|W0Lj;HrpOTYD z>uERDod)lj_R}HqXISk+QOX;#&b7a{8HLz8>poSst1F~gxqYO^dEY9lE?gN&vCiQM z#2Ki$X%F+8YmjfVNMsl4H ze++10TI*#m_~(_A%PBEC9>6>!vR*mDtoqF6K>jv|WNd%d<-C%}?D#{ZQoYzJGQKG= zKM!;MU){B88Y>wX(MbnXna1MZ=Bd2=zKLC@=7N?frMNgCT~&GXBqO)x!{7E5lSK~X z@HpSNO{ax|4U1HEaAn}-iYFJ&s$%tb;V8n|Mspu#)|5Uf8Uw=++Dx` zX(3iiwGEa9tyPegfL$x{u*USUY9BOh7bG@qjI}0>P0hA3_L10FTWQ*ev56uorf6xj zw834Z8dQpftd)mNBP9g|6j*lm?#!I8`JFj)cNXT}J9Bq&#oWUmcgfC~Idjh5Ip2KW z@6j&K)Qs#F&F7gCS4d08SIh`t3ENMTkr&dxqobR@)7I6NSWxbC{rx?Y?> zts&NAT-l8qt6VE{QZA8*;O&hrsd8~6Dj5D=M4;UJ(Het|p1&Gq2&EHf>ckov+G|uT zEr=LNh~Lx*)}q73{M^XQMxZVwE2`ESjr8~Hm>C(S)a_``EfY%vZZ|tJlNszM{Il#Q zg&-p+W99QqrGe5#6EAoK?)FvN@i&)Vm&>U~eeIVqKLOTf*!hp<3xnq}Z$)rxn(NR0 zK}OL}J;S##P`x0+v7h)3W6=i4n^xrQsmstJ5(;7_&EQ4v6HmaI%v`2K*P4gO-#&JG zlx-m}Sx>|B6PeDMs^3~}|Bo0JA^faDwo*{G3KWsmZ!>(`w>`OMqeIz+fg*AcScJ50 zWN2LKot@(j!_@TT(JwOb^6c6Ekf`G`_$vwzC z(`1fCc3nV}`8yF$49ir|7X&Q? z0QNsE|6`&l00@VMnA)WQ(b6x%CGFEb(zJnG+H`&gZ>e^T9e2r6W_f}%6;J}Rs>Nk% z216gWPUPALK2dI-d#_WoKHc5!U7urTZOIL=J;N8+_+146{@|I}OI(`Ow!Ts0%=a_kO9jvH2moIU*L|MB^ zXFI&(rW=LyeWG**^m3!oz<%Io1z|xY>^MSNATWB6GyEM9eVQiGE^t6_V$&ylp|!*|F<&4-wszw9iS$ zA*i}631hC(`E6zgPWKh}lNw_~mJ%;5U^>P&k=v&Dl-3X!_i;ah*{ z%dbu_IZaV~PDm{$a*p;56?Cx)0F59^gmVVC8@wCwI_4|ewLH6? zsd#O$zR@g^p^HPNm5JQXGPiCLc{W3I&RaxTFw<#WCi?xn}1w+WB zs^PbVx86^O3dJcrp^SN{EelohyaGl2JfB*Qi z*Tn+8dyg!>kd?nlF-tUl^#U;qM>v%j9s(LUC`1uVa$OudsY39vaz$N!8Q ziz|1uDUzpzR7>boZUy~}yEv2T*F;~^qz+`Md0SA13QRMHsNyD&d5+1wil{h4$oVUi znmEMF8UhIe%Ok``nA9TXwwJYR8Dvt~DE&N&=Lt$z2eU*UClni`_%Wr3s+ZshW};Rf#!nWe97f&#vzD~ zZD~PhV{y-8cFni{C}$m0)an!MbsQS(?V}S>=2V)2?fjYS%_%zH#nuyIX+lq`paf=O zdc^YsCE57rNxY=96Hmrut?Me`HzEK41GY&-K~(edse+>C2d#U0yuNO5E_mhi57PX$ zKUL2_CA)I{M~Mh<2JnhH9StQTfQD;QtnFs7oQTTq(^UqvnwghdQ8bhk<6Z*ry@IIV z*O>!sm54w+7%IZG8otmFBgCds2}}%(gz-=l5tPDE606j1X6CZYeDoj@f$tG0-$^$e zSY9A-0<|0fJ|~GNdpg8Px%Z( zMz8~g?Ne+JJh@|qL(cDm;2_YV2}(^yj|N&dy$!vJYW8=0ogJ=PZM6FGPrq2kvX_Vj)VqYQ9R>fk=Hj8 z6&6NZ)x&_sjwhOd0{B@iWG*IB6i=|GXVf7*J?**H*2l~GarF$o5$M!2YbpD@dY3HK zMBmUp4I)y78ghW|frBTwrrH>8f>g+!0yz15b5?fFKJ#ZQZ*YGApcyge1-8NJBkboXy$R&2L)y>>u87w=pI-{l+aE-H~NEGA6vV& zEH`A0l5S#$YWanwnw0n8!AJHkyFq2VPbv}5%)a=;Rf{twkLQT;x3^55{TLjr!`tXP zws0OPx7}gx)9f3Zj{+vg1UUqa9DMJ5Qu^UMZ>xxN5m}OV>Cj3hJyo01$SLa@KDUdS zGOP3aLag(=Efqmo8bMB4m0?^1?4COV2h-7QA_6sSyyTb{fs_qV0B}-wGY?62;2eX} z33~SIEaiNcz{f#wW4%?$!O#6UzU4tzR^86Tv)DMJnhcJ?-UJyJhze#OBI3E4)O19w z3T~=~jTKr$@L?inGxL?@=Zq^a%u~e3l*3!34EGC4TgLt&tH|jh^7jzsuGXXmU<(ms zoB)zWFTCoOu|hb>LFRD?HXCgOGtdZhMlgA2epkch81;wPnLjV@?K_B5PJXvWJeJpf zx9+iVoyH6_X5jrb1C2oE{k5KryJ^foV+I;C(3pY73^ZmSG6VkygFeke%tz7e00000 LNkvXXu0mjfZ5jZP literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/mine/icon_recharge_first.png b/circle_app/assets/images/mine/icon_recharge_first.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9e59fe339bf6cc536eba301e9405872e0efa9b GIT binary patch literal 5285 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 literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/mine/icon_recharge_fourth.png b/circle_app/assets/images/mine/icon_recharge_fourth.png new file mode 100644 index 0000000000000000000000000000000000000000..a2381eca19a351ea0eaf5c58a054024d8a133c32 GIT binary patch literal 11202 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 literal 0 HcmV?d00001 diff --git a/circle_app/assets/images/mine/icon_recharge_second.png b/circle_app/assets/images/mine/icon_recharge_second.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9f1c86c7e2186dc332a02b283d1f3110551b8c GIT binary patch literal 9552 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 Hu0mjfjYD;Z literal 0 HcmV?d00001 diff --git a/circle_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/circle_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index f3d88ac..c87d15a 100644 --- a/circle_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/circle_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -40,7 +40,7 @@ new _DiscoverPageState(); +} + +class _DiscoverPageState extends State { + // TODO: add state variables and methods + + @override + Widget build(BuildContext context) { + // TODO: add widget build method + return Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage(getBaseImage("bg")), + fit: BoxFit.cover, + ), + ), + child: Scaffold( + backgroundColor: Colors.transparent, + appBar: const MyAppBar( + centerTitle: '已解锁的圈友', + // actionWdiget: , + ), + + body: Discover(1), + )); + } +} diff --git a/circle_app/lib/app/circle/logic.dart b/circle_app/lib/app/circle/logic.dart index cdc9461..41ec4a7 100644 --- a/circle_app/lib/app/circle/logic.dart +++ b/circle_app/lib/app/circle/logic.dart @@ -33,6 +33,7 @@ class CircleLogic extends GetxController { int page = 1; int vicinityPage = 1; + int currentPage = 0; bool isMore = true; int myVip = 0; @@ -79,6 +80,13 @@ class CircleLogic extends GetxController { List roleList = []; + + List dis_genderList = []; + + List dis_orientationList = []; + + List dis_roleList = []; + void initGerder() async { var data1 = await DioManager.instance.get(url: Api.getCircleList, params: {}); @@ -89,13 +97,17 @@ class CircleLogic extends GetxController { configBean.genderMap.forEach((key, value) { genderList.add(MyConfigData(key, value, false)); + dis_genderList.add(MyConfigData(key, value, false)); }); configBean.orientationMap.forEach((key, value) { orientationList.add(MyConfigData(key, value, false)); + dis_orientationList.add(MyConfigData(key, value, false)); }); configBean.roleMap.forEach((key, value) { roleList.add(MyConfigData(key, value, false)); + dis_roleList.add(MyConfigData(key, value, false)); + }); } diff --git a/circle_app/lib/app/circle/view.dart b/circle_app/lib/app/circle/view.dart index 7b1c011..290a20e 100644 --- a/circle_app/lib/app/circle/view.dart +++ b/circle_app/lib/app/circle/view.dart @@ -1,22 +1,21 @@ import 'dart:math'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:circle_app/app/circle/widgets/discover.dart'; import 'package:circle_app/app/circle/widgets/info_list_view.dart'; +import 'package:circle_app/app/circle/widgets/vicinity.dart'; import 'package:circle_app/app/dialog/ScreenBottomSheetDialog.dart'; -import 'package:circle_app/app/msg/view.dart'; -import 'package:circle_app/common/Widgets/open_vip_tip/view.dart'; import 'package:circle_app/router/app_routers.dart'; +import 'package:circle_app/util/eventBus.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; import 'package:flutter_pickers/pickers.dart'; -import 'package:flutter_pickers/style/default_style.dart'; import 'package:flutter_pickers/style/picker_style.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; import 'package:get/get.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; -import '../../util/eventBus.dart'; import '../select_circle/logic.dart'; import '../userinfo/logic.dart'; import 'logic.dart'; @@ -32,7 +31,7 @@ class CirclePage extends StatefulWidget { } class _CirclePageState extends State - with SingleTickerProviderStateMixin { + with SingleTickerProviderStateMixin, AutomaticKeepAliveClientMixin { late TabController _tabController; late PageController _pageController; @@ -42,8 +41,9 @@ class _CirclePageState extends State @override void initState() { super.initState(); - _pageController = PageController(); - _tabController = TabController(length: 1, vsync: this); + int initIndex = Random().nextInt(3); + _pageController = PageController(initialPage: initIndex); + _tabController = TabController(length: 3, vsync: this, initialIndex: initIndex); _tabController.addListener(_handleTabChange); } @@ -73,13 +73,10 @@ class _CirclePageState extends State @override Widget build(BuildContext context) { getContext = context; - return GetBuilder(builder: (logic) - { + return GetBuilder(builder: (logic) { return Scaffold( backgroundColor: Colors.transparent, - body: - - SafeArea( + body: SafeArea( child: GetBuilder(builder: (CircleLogic controller) { return Stack( children: [ @@ -100,35 +97,29 @@ class _CirclePageState extends State }, children: [ circleList(controller), - // vicinityList(controller), + Vicinity(controller), + Discover(0) ], ), ), - logic.isShowCircle - ? - Positioned( - bottom: 36.sp, - right: 10.sp, - child: GestureDetector( - onTap: () async { - List numbers = []; - numbers.add(MyConfigData( - logic - .getCircleIndex() - .id - .toString(), - logic - .getCircleIndex() - .title!, - false)); - var data = await Get.toNamed( - AppRoutes.Call_out, - arguments: {'numbers': numbers}); - }, - child: Image.asset( - getCircleImage('send_msg'), - width: 60.sp, - ))) + _tabController.index == 0 + ? Positioned( + bottom: 36.sp, + right: 10.sp, + child: GestureDetector( + onTap: () async { + List numbers = []; + numbers.add(MyConfigData( + logic.getCircleIndex().id.toString(), + logic.getCircleIndex().title!, + false)); + var data = await Get.toNamed(AppRoutes.Call_out, + arguments: {'numbers': numbers}); + }, + child: Image.asset( + getCircleImage('send_msg'), + width: 60.sp, + ))) : Center() ], ); @@ -562,11 +553,11 @@ class _CirclePageState extends State infoList = statistics.lastVisitUsers; if (infoList.isNotEmpty) { for (var element in infoList) { - if(element["avatar"]!=null&&element["avatar"].contains("http")){ - urlList.add(element["avatar"]); - } + if (element["avatar"] != null && element["avatar"].contains("http")) { + urlList.add(element["avatar"]); + } - // urlList.add(element["avatar"]); + // urlList.add(element["avatar"]); } } } @@ -594,71 +585,84 @@ class _CirclePageState extends State child: Stack( alignment: Alignment.center, children: [ - // logic.isShowCircle - // ? Positioned( - // left: 0, - // child: GestureDetector( - // onTap: () { - // Get.toNamed(AppRoutes.Invite); - // }, - // child: Container( - // decoration: BoxDecoration( - // borderRadius: BorderRadius.circular(17.0), - // gradient: const LinearGradient( - // colors: [ - // Color(0xFF06F9FA), - // Color(0xFFDC5BFD), - // ], - // ), - // color: const Color(0xFF392D53), - // ), - // child: Container( - // margin: EdgeInsets.all(0.6.sp), - // decoration: BoxDecoration( - // borderRadius: BorderRadius.circular(17.0), - // color: const Color(0xFF392D53), - // ), - // child: Padding( - // padding: EdgeInsets.only( - // top: 5.sp, - // bottom: 4.sp, - // left: 8.sp, - // right: 8.sp, - // ), - // child: const Center( - // child: Text( - // "邀请得会员", - // style: TextStyle( - // fontSize: 11, - // color: Colors.white, - // ), - // ), - // ), - // ), - // ), - // ), - // )) - // - // : GestureDetector( - // onTap: () { - // showCityPiker(context); - // }, - // child: Row( - // children: [ - // Image.asset( - // getCircleImage('icon_city'), - // width: 24.sp, - // ), - // Container( - // margin: EdgeInsets.only(left: 4.sp, top: 4.sp), - // child: Text( - // modifyCityName(logic.cityName), - // style: - // TextStyle(color: Colors.white, fontSize: 16.sp), - // )) - // ], - // ), - // ), + _tabController.index == 0 + ? Positioned( + left: 0, + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Invite); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + ), + color: const Color(0xFF392D53), + ), + child: Container( + margin: EdgeInsets.all(0.6.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + color: const Color(0xFF392D53), + ), + child: Padding( + padding: EdgeInsets.only( + top: 5.sp, + bottom: 4.sp, + left: 8.sp, + right: 8.sp, + ), + child: const Center( + child: Text( + "邀请得会员", + style: TextStyle( + fontSize: 11, + color: Colors.white, + ), + ), + ), + ), + ), + ), + )) + : _tabController.index == 1 + ? Positioned( + left: 0, + child: GestureDetector( + onTap: () { + showCityPiker(context); + }, + child: Row( + children: [ + Image.asset( + getCircleImage('icon_city'), + width: 24.sp, + ), + Container( + margin: EdgeInsets.only(left: 4.sp, top: 4.sp), + child: Text( + modifyCityName(logic.cityName), + style: TextStyle( + color: Colors.white, fontSize: 16.sp), + )) + ], + ), + )) + : Positioned( + left: 0, + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.DisCover); + }, + child: Image.asset( + getCircleImage('clocked_icon'), + width: 60.sp, + ), + )), Container( alignment: Alignment.center, //padding: EdgeInsets.symmetric(horizontal: 10.sp), @@ -674,17 +678,34 @@ class _CirclePageState extends State indicator: UnderlineTabIndicator( borderSide: BorderSide( color: const Color(0xFF00FFF4), - width: 2.sp, + width: 1.5.sp, ), insets: EdgeInsets.symmetric(horizontal: 6.0.sp), borderRadius: BorderRadius.circular(18.0), ), indicatorColor: const Color(0xFF00FFF4), - indicatorWeight: 2.sp, + indicatorWeight: 1.sp, labelColor: const Color(0xFF00FFF4), unselectedLabelColor: const Color(0xB3FFFFFF), indicatorSize: TabBarIndicatorSize.label, + indicatorPadding: EdgeInsets.only(left: 6.sp, right: 6.sp), tabs: [ + Tab( + child: Text( + '圈子', + style: TextStyle( + fontSize: 18.sp, + ), + ), + ), + Tab( + child: Text( + '附近', + style: TextStyle( + fontSize: 18.sp, + ), + ), + ), Tab( child: Text( '发现', @@ -693,14 +714,6 @@ class _CirclePageState extends State ), ), ), - // Tab( - // child: Text( - // '附近', - // style: TextStyle( - // fontSize: 18.sp, - // ), - // ), - // ), ], labelStyle: TextStyle( color: const Color(0xFF00FFF4), @@ -731,35 +744,18 @@ class _CirclePageState extends State duration: const Duration(milliseconds: 300), // 动画时长 curve: Curves.ease, // 动画曲线 ); + if (index == 2) { + EventBusManager.fire(DiscovrScrollTap()); + } else if (index == 1) { + EventBusManager.fire(NearScrollTap()); + } else if (index == 0) { + EventBusManager.fire(ScrollToTop()); + } }, ), ], ), ), - - // ShaderMask( - // shaderCallback: (Rect bounds) { - // return const LinearGradient( - // begin: Alignment(0.0, -1.0), - // end: Alignment.bottomCenter, - // colors: [Color(0xff71F3F2), Color(0xffF657FF)], - // ).createShader(Offset.zero & bounds.size); - // }, - // child: GestureDetector( - // onTap: (){ - // - // }, - // child: Text( - // '发现', - // style: TextStyle( - // fontSize: 18.sp, - // fontWeight: FontWeight.w600, - // color: Colors.white, - // shadows: const [Shadow(color: Color(0xffF657FF), offset: Offset(0.0, -1))], - // ), - // ), - // ), - // ), Positioned( right: 0, child: logic.isShowCircle @@ -793,11 +789,32 @@ class _CirclePageState extends State backgroundColor: Colors.transparent, builder: (BuildContext context) { return ScreenBottomSheetDialog( - genderList: logic.genderList, - orientationList: logic.orientationList, - roleList: logic.roleList, + genderList: _tabController.index == 1 ? logic.genderList : logic.dis_genderList, + orientationList: _tabController.index == 1 ? logic.orientationList : logic.dis_orientationList, + roleList: _tabController.index == 1 ? logic.roleList : logic.dis_roleList, callback: (genderList, orientationList, roleList) { - _onRefresh(); + if (_tabController.index == 1) { + _onRefresh(); + } else { + + List genders = []; + logic.dis_genderList.forEach((element) { + if (element.isSelect) { + genders.add(element.id); + } + }); + List roles = []; + logic.dis_orientationList.forEach((element) { + if (element.isSelect) roles.add(element.id); + }); + + List orientations = []; + logic.dis_roleList.forEach((element) { + if (element.isSelect) orientations.add(element.id); + }); + + EventBusManager.fire(OptionFindclass(genders,roles,orientations)); + } }, ); // Use your custom widget here }, @@ -1112,3 +1129,14 @@ class DefaultPickerStyle extends PickerStyle { this.textColor = Colors.white; } } + +class DiscovrScrollTap {} +class NearScrollTap {} +class CircleScrollTap {} + +class OptionFindclass { + List? genderList;List? orientationList;List? roleList; + + OptionFindclass(this.genderList,this.orientationList,this.roleList); + +} diff --git a/circle_app/lib/app/circle/widgets/discover.dart b/circle_app/lib/app/circle/widgets/discover.dart new file mode 100644 index 0000000..235a826 --- /dev/null +++ b/circle_app/lib/app/circle/widgets/discover.dart @@ -0,0 +1,956 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:circle_app/app/circle/view.dart'; +import 'package:circle_app/common/Widgets/genderview.dart'; +import 'package:circle_app/common/colors/app_color.dart'; +import 'package:circle_app/common/const.dart'; +import 'package:circle_app/main.dart'; +import 'package:circle_app/network/api.dart'; +import 'package:circle_app/network/dio_manager.dart'; +import 'package:circle_app/router/app_routers.dart'; +import 'package:circle_app/util/SharedPreferencesHelper.dart'; +import 'package:circle_app/util/util.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_swiper/flutter_swiper.dart'; +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; +import '../../../../util/eventBus.dart'; + +const String todayAddWxStatus = 'todayAddWxStatus'; + +class Discover extends StatefulWidget { + int unlockWxNum; + Discover(this.unlockWxNum, {super.key}); + @override + _DiscoverState createState() => _DiscoverState(); +} + +class _DiscoverState extends State + with AutomaticKeepAliveClientMixin { +// TODO: add state variables and methods + @override + bool get wantKeepAlive => true; + // TODO: add state variables and methods + ScrollController _scrollController = ScrollController(); + RefreshController refreshController = RefreshController(); + var refreshSignSub; + var sub; + var sub1; + var subscripition; + List list = []; + List giftList = []; + bool isMore = true; + int index = 1; + List tagList = []; + + List genderList = [];List orientationList= [];List roleList= []; + bool isPop = false; +//获取屏幕宽度 + + Offset pointerStart = Offset.zero; + Offset pointerEnd = Offset.zero; + double touchRangeY = 0; + double nextOffset = 0; + int lastPage = 0; + + double screenHeight = Get.height - + Get.bottomBarHeight - + Get.statusBarHeight - + ((Get.height > 750 ? 115.sp : 155.sp) - Get.statusBarHeight); + + void animateToOffset(ScrollController controller, double offset, + void Function() onScrollCompleted) { + controller + .animateTo(offset, + duration: const Duration(milliseconds: 200), curve: Curves.easeIn) + .then((value) { + if (onScrollCompleted != null) { + onScrollCompleted(); + } + }).catchError((e) { + print(e); + }); + } +// 按下时保存当前的点 + +// 按下时保存当前的点 + PointerDownEventListener getPointDownListenerInHorizontal() { + return (event) { + pointerStart = event.position; + }; + } + +// 抬起时触发 + PointerUpEventListener getPointUpListenerInHorizontal() { + return (event) { + pointerEnd = event.position; + touchRangeY = pointerStart.dy - pointerEnd.dy; + + if (touchRangeY.abs() < screenHeight / 3) { + // 滑动距离大于屏幕宽度的1/8就可以继续翻页了 + nextOffset = (screenHeight + 10.sp) * lastPage; + animateToOffset(_scrollController, nextOffset, () {}); + return; + } + if (touchRangeY < 0 && lastPage > 0) { + // 手指从下向上滑动 + lastPage--; + animateToOffset( + _scrollController, lastPage * (screenHeight + 10.sp), () {}); + } else if (touchRangeY > 0 && lastPage < list.length - 1) { + // 从上向下 + lastPage++; + animateToOffset( + _scrollController, lastPage * (screenHeight + 10.sp), () {}); + if (lastPage == 3 && isPop == false && widget.unlockWxNum == 0) { + isPop = true; + //弹窗提示 + checkIsPopWxTip(); + } + } + }; + } + + @override + void dispose() { + // TODO: implement dispose + super.dispose(); + if (widget.unlockWxNum == 0) { + subscripition.cancel(); + } + sub.cancel(); + sub1.cancel(); + } + + @override + void initState() { + // TODO: implement initState + super.initState(); + loadData(); + if (widget.unlockWxNum == 0) { + subscripition = EventBusManager.on().listen((event) { + refreshData(); + }); + } + + + sub = EventBusManager.on().listen((event) { + _scrollController.animateTo(0, + duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); + }); + sub1 = EventBusManager.on().listen((event) { + genderList = event.genderList!; + orientationList = event.orientationList!; + roleList = event.roleList!; + index = 1; + loadData(); + }); + + refreshSignSub = EventBusManager.on().listen((event) { + loadSignDiscoverData(event.userId); + }); + } + + setLike(String userId, bool isLike, Function callBack) async { + // if (isBlack || isDestroy) { + // showOKToast("喜欢失败,存在拉黑关系或者该账户已注销"); + // return; + // } + + var data = await DioManager.instance.post( + url: "${Api.setLike + userId}/follow", + params: {'status': isLike ? "0" : "1"}); + var bean = BaseResponse.fromJson( + data, + (jsonData) => jsonData, + ); + if (bean.isSuccess()) { + callBack(); + } + showOKToast(bean.msg); + } + + loadSignDiscoverData(String userId) async { + try { + var result = await DioManager.instance + .get(url: Api.getFindPageUserByUserId, params: { + 'userId': userId, + 'lat': '0', + 'lng': '0', + }); + + int initIndex = 0; + list.forEach((element) { + if (element['id'].toString() == userId) { + initIndex = list.indexOf(element); + } + }); + + list[initIndex] = result['data']; + setState(() {}); + } catch (e) { + + } + } + + loadGiftListData() async { + // var result = await DioManager.instance.get(url: Api.giftList); + // if (result['code'] == 10000) { + // giftList = result['data']; + // await loadData(); + // setState(() {}); + // } + } + + loadData() async { + var data = await DioManager.instance.post(url: Api.findPage, params: { + 'page': index, + 'pageSize': 8, + 'unlockWxNum': widget.unlockWxNum, + "genders": genderList, + "roles": roleList, + "orientations": orientationList, + 'lat': '0', + 'lng': '0', + }); + // + if (data['code'] == 200) { + List dataList = data['data']; + + if (dataList.isNotEmpty) { + if (index == 1) { + list = dataList; + refreshController.refreshCompleted(); + } else { + list.addAll(dataList); + } + + index = index + 1; + isMore = true; + refreshController.loadComplete(); + } else { + isMore = false; + refreshController.loadNoData(); + } + if (mounted) { + setState(() {}); + } + } + } + + void refreshData() { + index = 1; + loadData(); + } + + _onLoading() { + loadData(); + } + + @override + Widget build(BuildContext context) { + // TODO: add widget build method + return list.isEmpty + ? isMore + ? loaddingWidget(true) + : noResultWidget(tip: '已解锁微信的圈友会展示在这里哦~') + : Listener( + onPointerDown: getPointDownListenerInHorizontal(), + onPointerUp: getPointUpListenerInHorizontal(), + child: SmartRefresher( + onRefresh: refreshData, + controller: refreshController, + onLoading: _onLoading, + enablePullUp: true, + child: ListView.builder( + itemBuilder: (context, index) { + var user = Users.fromJson(list[index]); + + String onLineStr = ''; + if (user.online! ?? false) { + onLineStr = '当前在线'; + if (user.distance != null) { + if (user.distance! < 100) { + onLineStr = '当前在线 · ${user.distance!}km'; + } + } + } else { + if (user.distance != null) { + if ((user.distance! ?? 10) < 100) { + onLineStr = '${user.distance!}km'; + } + } + } + + return Container( + height: screenHeight, + width: Get.width, + margin: EdgeInsets.only( + top: 10.sp, left: 16.sp, right: 16.sp), + child: Stack( + children: [ + Container( + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10.sp), + image: DecorationImage( + fit: BoxFit.fill, + image: AssetImage( + getCircleImage('open_vip_bg'), + ))), + height: screenHeight, + width: Get.width, + child: ClipRRect( + borderRadius: BorderRadius.circular(18), + clipBehavior: Clip.hardEdge, + child: Container( + padding: EdgeInsets.all(2.sp), + child: Swiper( + autoplay: + user.images!.length == 1 ? false : true, + itemBuilder: + (BuildContext context, int index) { + // print(index); + return GestureDetector( + onTap: () { + List imgList = []; + user.images!.forEach((element) { + imgList.add(element); + }); + + Get.toNamed(AppRoutes.Swiper, + arguments: { + 'imaglist': imgList, + 'index': index + }); + }, + child: CachedNetworkImage( + imageUrl: user.images![index], + fit: BoxFit.cover, + width: Get.width, + height: screenHeight, + )); + }, + itemCount: user.images!.length, + ), + )), + ), + Positioned( + left: 16.sp, + top: 20.sp, + child: Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (user.both_cities!.isNotEmpty) + Row( + children: [ + Container( + width: 6.sp, + height: 6.sp, + margin: + EdgeInsets.only(right: 4.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.sp), + color: const Color(0xFFCE51FF), + ), + ), + // if (logic.online) + Text( + "你们都来过${user.both_cities!.first}", + style: TextStyle( + color: Colors.white, + fontSize: 14.sp), + ), + ], + ), + if (user.both_cities!.isNotEmpty) + SizedBox( + height: 8.sp, + ), + if (onLineStr.isNotEmpty) + Row( + children: [ + Container( + width: 6.sp, + height: 6.sp, + margin: + EdgeInsets.only(right: 4.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.sp), + color: const Color(0xFFCE51FF), + ), + ), + // if (logic.online) + Text( + onLineStr, + style: TextStyle( + color: Colors.white, + fontSize: 14.sp), + ), + ], + ), + ], + ), + )), + Positioned( + right: 16.sp, + top: 16.sp, + child: GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.UserInfoActivity, + arguments: user.userId!.toString()); + }, + child: Container( + width: 73.sp, + height: 25.sp, + decoration: BoxDecoration( + gradient: AppColor.mainLinearGradient, + borderRadius: + BorderRadius.circular(12.5.sp)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: EdgeInsets.only(left: 5.sp), + child: Text( + '查看主页', + style: TextStyle( + color: Colors.white, + fontSize: 10.sp, + ), + ), + ), + Image( + width: 15.sp, + image: AssetImage( + getDisCoverImage("right_icon")), + // width: 44.sp, + ), + ], + ), + ), + )), + Positioned( + left: 6.sp, + bottom: 6.sp, + child: Container( + width: Get.width - 32.sp, + padding: EdgeInsets.only(right: 0.sp), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (user.wxNum != null) + wxStatusWidget( + user.unLockWxNum == 1, + user.wxNum!, + user.userId.toString(), + user.avatarUrl!, () { + loadSignDiscoverData( + user.userId.toString()); + }), + SizedBox( + height: 10.sp, + ), + Row( + children: [ + Text( + user.nickname ?? '', + style: TextStyle( + fontSize: 18.sp, + color: Color(0XFFF7FAFA), + fontWeight: FontWeight.bold), + ), + Container( + margin: EdgeInsets.only(left: 5.sp), + alignment: Alignment.center, + height: 18.sp, + padding: EdgeInsets.only( + left: 6.sp, right: 6.sp), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(9.sp), + gradient: const LinearGradient( + begin: Alignment(0.25, 0.5), + end: Alignment(0.75, 0.5), + colors: [ + Color(0xff8DFFF8), + Color(0xffB5D3FF) + ])), + child: Text( + getAgeCOntent( + user!.gender ?? 0, + user!.age ?? 0, + user!.role ?? 0, + user!.orientation ?? 0), + style: TextStyle( + color: Colors.black, + fontSize: 12.sp, + ), + ), + ), + if (user.vip! > 0) + Container( + margin: EdgeInsets.only( + left: 4.sp, + ), + child: Image.asset( + getCircleImage(user!.vip == 1 + ? 'vip' + : 'year_vip'), + width: 36.sp, + ), + ), + ], + ), + Container( + width: Get.width - 120.sp, + margin: EdgeInsets.only(top: 5.sp), + child: Text( + user.signature! ?? '', + overflow: TextOverflow.ellipsis, + maxLines: 2, + style: TextStyle( + fontSize: 15.sp, + color: const Color(0XFFF7FAFA)), + ), + ), + Container( + width: Get.width - 110.sp, + height: 35.sp, + child: tagItem(user.interests!), + ), + ], + ), + )), + Positioned( + bottom: 5.sp, + right: 15.sp, + child: Container( + child: Column( + children: [ + GestureDetector( + onTap: () { + pushChatPage( + user.userId.toString(), + user.imAccid!.toString(), + user.nickname!); + }, + child: Image.asset( + getCircleImage( + 'chat_icon', + ), + width: 40.sp, + ), + ), + SizedBox( + height: 8.sp, + ), + GestureDetector( + onTap: () { + setLike(user.userId!.toString(), + user.is_follow!, () { + list[index]['is_follow'] = + !user.is_follow!; + setState(() {}); + }); + }, + child: Image.asset( + getCircleImage( + user.is_follow! + ? 'like_icon' + : 'nor_like_icon', + ), + width: 40.sp, + ), + ), + GestureDetector( + onTap: () { + sendNoLookData(user.userId!,index); + }, + child: Image.asset( + getCircleImage( + 'no_look_icon', + ), + width: 40.sp, + ), + ) + ], + ), + )) + ], + )); + }, + itemCount: list.length, + physics: BouncingScrollPhysics(), + controller: _scrollController, + ), + ), + ); + } + + tagItem(List item) { + return Container( + width: Get.width, + margin: EdgeInsets.only(top: 5.sp, bottom: 5.sp), + // color: Colors.red, + // height: 45.sp, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: item.length, + itemBuilder: (context, index) { + return tagWidget(item[index]['title'], item[index]['id']); + }), + ); + } + + tagWidget(String tagName, int id) { + return GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Signal_circle_list, arguments: id); + }, + child: Container( + margin: EdgeInsets.only(right: 6.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + ), + color: const Color(0xFF392D53), + ), + child: Container( + margin: EdgeInsets.all(0.2.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + color: const Color(0xFF392D53), + ), + child: Padding( + padding: EdgeInsets.only( + top: 2.sp, + bottom: 2.sp, + left: 10.sp, + right: 10.sp, + ), + child: Center( + child: Text( + tagName, + style: const TextStyle( + fontSize: 11.0, + color: Colors.white, + ), + ), + ), + ), + ), + ), + ); + } + + addWxPicker() { + return Get.bottomSheet( + Container(), + isScrollControlled: false, + enableDrag: false, + ); + } + + void checkIsPopWxTip() async { + SharedPreferencesHelper sp = await SharedPreferencesHelper.getInstance(); + var date = DateTime.now(); + final dateFormat = DateFormat("yyyy-MM-dd"); + final date2 = dateFormat.format(date); + if (sp.preferences!.containsKey(todayAddWxStatus)) { + var lastDate = sp.preferences!.getString(todayAddWxStatus); + if (lastDate != date2) { + loadWxNumData(); + sp.preferences!.setString(todayAddWxStatus, date2); + } + } else { + sp.preferences!.setString(todayAddWxStatus, date2); + loadWxNumData(); + } + } + + loadWxNumData() async { + // var data = await DioManager.instance.post(url: Api.myMainPage); + // + // if (data['code'] == 10000) { + // if (data['userBase']['wxNum'] == null) { + // showAddWxPicker(false); + // } else if (data['userBase']['wxNum'].toString().isEmpty) { + // showAddWxPicker(false); + // } + // + // } + } + + void sendNoLookData(int userId,int index) async { + var data = await DioManager.instance.post(url: Api.uninterested + userId.toString()); + if (data['code'] == 200) { + list.removeAt(index); + setState(() { + + }); + } + } +} + + +class DiscoverDataRefresh { + String userId; + DiscoverDataRefresh(this.userId); +} + +class Users { + int? age; + bool? auth; + String? avatarUrl; + String? bgPicUrl; + String? birthday; + bool? blacklist; + String? city; + double? distance; + bool? dust; + String? email; + bool? followBag; + int? followStatus; + int? gender; + String? genderName; + String? heartbeatValue; + int? height; + int? hugCount; + String? imAccid; + List? images; + List? interests; + String? inviteCode; + int? kyNum; + String? lastLoginLog; + String? lastLoginTime; + int? level; + List? litGifts; + int? lvType; + MapUserJumpAo? mapUserJumpAo; + String? nickname; + String? nicknameNote; + bool? online; + String? openId; + bool? partner; + bool? is_follow; + String? phoneNum; + int? popularityValue; + bool? realPersonAuth; + int? relationshipStatus; + String? signature; + bool? specialConcern; + int? storyCount; + List? tags; + int? touchTime; + int? unLockWxNum; + int? userId; + int? weight; + int? orientation; + int? role; + int? vip; + String? wxNum; + List? both_cities; + + Users( + {this.age, + this.auth, + this.avatarUrl, + this.bgPicUrl, + this.birthday, + this.blacklist, + this.city, + this.distance, + this.dust, + this.email, + this.is_follow, + this.vip, + this.followBag, + this.followStatus, + this.gender, + this.genderName, + this.heartbeatValue, + this.height, + this.hugCount, + this.imAccid, + this.role, + this.images, + this.interests, + this.inviteCode, + this.kyNum, + this.lastLoginLog, + this.lastLoginTime, + this.level, + this.litGifts, + this.lvType, + this.mapUserJumpAo, + this.nickname, + this.nicknameNote, + this.online, + this.openId, + this.partner, + this.phoneNum, + this.popularityValue, + this.realPersonAuth, + this.relationshipStatus, + this.signature, + this.specialConcern, + this.storyCount, + this.tags, + this.touchTime, + this.unLockWxNum, + this.both_cities, + this.userId, + this.orientation, + this.weight, + this.wxNum}); + + Users.fromJson(Map json) { + age = json['age']; + vip = json['vip']; + role = json['role']; + auth = json['auth']; + both_cities = json['both_cities'] ?? []; + is_follow = json['is_follow']; + interests = json['interests']; + avatarUrl = json['avatar']; + bgPicUrl = json['bgPicUrl']; + birthday = json['birthday']; + blacklist = json['blacklist']; + city = json['city']; + orientation = json['orientation']; + distance = json['distance']; + dust = json['dust']; + email = json['email']; + followBag = json['followBag']; + followStatus = json['followStatus']; + gender = json['gender']; + genderName = json['genderName']; + heartbeatValue = json['heartbeatValue'].toString(); + height = json['height']; + hugCount = json['hugCount']; + imAccid = json['account_id']; + images = json['images']; + inviteCode = json['inviteCode']; + kyNum = json['kyNum']; + lastLoginLog = json['lastLoginLog']; + lastLoginTime = json['lastLoginTime']; + level = json['level']; + litGifts = json['litGifts']; + lvType = json['lvType']; + mapUserJumpAo = json['mapUserJumpAo'] != null + ? new MapUserJumpAo.fromJson(json['mapUserJumpAo']) + : null; + nickname = json['nickname']; + nicknameNote = json['nicknameNote']; + online = json['isOnline']; + openId = json['openId']; + partner = json['partner']; + phoneNum = json['phoneNum']; + popularityValue = json['popularityValue']; + realPersonAuth = json['realPersonAuth']; + relationshipStatus = json['relationshipStatus']; + signature = json['signature']; + specialConcern = json['specialConcern']; + storyCount = json['storyCount']; + tags = json['tags']; + touchTime = json['touchTime']; + unLockWxNum = json['unLockWxNum']; + userId = json['id']; + weight = json['weight']; + wxNum = json['wx_num']; + } + + Map toJson() { + final Map data = new Map(); + data['age'] = this.age; + data['auth'] = this.auth; + data['avatarUrl'] = this.avatarUrl; + data['bgPicUrl'] = this.bgPicUrl; + data['birthday'] = this.birthday; + data['blacklist'] = this.blacklist; + data['city'] = this.city; + data['distance'] = this.distance; + data['dust'] = this.dust; + data['email'] = this.email; + data['followBag'] = this.followBag; + data['followStatus'] = this.followStatus; + data['gender'] = this.gender; + data['genderName'] = this.genderName; + data['heartbeatValue'] = this.heartbeatValue; + data['height'] = this.height; + data['hugCount'] = this.hugCount; + data['imAccid'] = this.imAccid; + if (this.images != null) { + data['images'] = this.images!.map((v) => v.toJson()).toList(); + } + data['inviteCode'] = this.inviteCode; + data['kyNum'] = this.kyNum; + data['lastLoginLog'] = this.lastLoginLog; + data['lastLoginTime'] = this.lastLoginTime; + data['level'] = this.level; + if (this.litGifts != null) { + data['litGifts'] = this.litGifts!.map((v) => v.toJson()).toList(); + } + data['lvType'] = this.lvType; + if (this.mapUserJumpAo != null) { + data['mapUserJumpAo'] = this.mapUserJumpAo!.toJson(); + } + data['nickname'] = this.nickname; + data['nicknameNote'] = this.nicknameNote; + data['online'] = this.online; + data['openId'] = this.openId; + data['partner'] = this.partner; + data['phoneNum'] = this.phoneNum; + data['popularityValue'] = this.popularityValue; + data['realPersonAuth'] = this.realPersonAuth; + data['relationshipStatus'] = this.relationshipStatus; + data['signature'] = this.signature; + data['specialConcern'] = this.specialConcern; + data['storyCount'] = this.storyCount; + if (this.tags != null) { + data['tags'] = this.tags!.map((v) => v.toJson()).toList(); + } + data['touchTime'] = this.touchTime; + data['unLockWxNum'] = this.unLockWxNum; + data['userId'] = this.userId; + data['weight'] = this.weight; + data['wxNum'] = this.wxNum; + return data; + } +} + +class MapUserJumpAo { + int? id; + String? roomId; + String? title; + int? type; + + MapUserJumpAo({this.id, this.roomId, this.title, this.type}); + + MapUserJumpAo.fromJson(Map json) { + id = json['id']; + roomId = json['roomId']; + title = json['title']; + type = json['type']; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['roomId'] = this.roomId; + data['title'] = this.title; + data['type'] = this.type; + return data; + } +} + +class msgPageRefresh {} diff --git a/circle_app/lib/app/circle/widgets/info_list_view.dart b/circle_app/lib/app/circle/widgets/info_list_view.dart index 1eea8a4..f654b61 100644 --- a/circle_app/lib/app/circle/widgets/info_list_view.dart +++ b/circle_app/lib/app/circle/widgets/info_list_view.dart @@ -100,11 +100,14 @@ class InfoListViewState extends State with AutomaticKeepAliveClien scroToTop = EventBusManager.on().listen((event) { - scrollController.animateTo( - 0.0, - duration: Duration(milliseconds: 300), - curve: Curves.easeInOut, - ); + if (widget.logic.state.index == widget.index) { + scrollController.animateTo( + 0.0, + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + } + }); // widget.back(widget.createState()); diff --git a/circle_app/lib/app/circle/widgets/vicinity.dart b/circle_app/lib/app/circle/widgets/vicinity.dart new file mode 100644 index 0000000..11cfcfe --- /dev/null +++ b/circle_app/lib/app/circle/widgets/vicinity.dart @@ -0,0 +1,469 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:circle_app/app/circle/logic.dart'; +import 'package:circle_app/app/circle/view.dart'; +import 'package:circle_app/app/circle/widgets/info_list_view.dart'; +import 'package:circle_app/app/userinfo/logic.dart'; +import 'package:circle_app/router/app_routers.dart'; +import 'package:circle_app/util/eventBus.dart'; +import 'package:circle_app/util/util.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_swiper/flutter_swiper.dart'; +import 'package:get/get.dart'; +import 'package:get/get_core/src/get_main.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; + +class Vicinity extends StatefulWidget { + CircleLogic logic; + // TODO: add state variables, methods and constructor params + Vicinity(this.logic); + + @override + State createState() => _VicinityState(); +} + +class _VicinityState extends State with AutomaticKeepAliveClientMixin { + var sub; + ScrollController _scrollController = ScrollController(); + @override + void initState() { + // TODO: implement initState + super.initState(); + sub = EventBusManager.on().listen((event) { + _scrollController.animateTo(0, + duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); + }); + } + + @override + void dispose() { + // TODO: implement dispose + super.dispose(); + _scrollController.dispose(); + sub.cancel(); + } + + @override + Widget build(BuildContext context) { + // TODO: add widget build method + return widget.logic.vicinityList.isNotEmpty ? SmartRefresher( + controller: widget.logic.refreshController, + onRefresh: _onRefresh, + onLoading: _onLoading, + enablePullUp: widget.logic.myVip > 0, + child: ListView.builder( + controller: _scrollController, + padding: EdgeInsets.all(10.sp), + itemCount: widget.logic.myVip == 0 + ? widget.logic.vicinityList.length + 2 + : widget.logic.vicinityList.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + return bannerView(widget.logic); + } else { + if (widget.logic.myVip == 0 && index == widget.logic.vicinityList.length + 1) { + return showVipView(); + } else { + return ListItem(widget.logic.vicinityList[index - 1], index - 1); + } + } + }, + ), + ) : loaddingWidget(true); + } + + Widget bannerView(CircleLogic controller) { + return SizedBox( + height: 160.sp, + // margin: EdgeInsets.symmetric(horizontal: 16.sp), + child: Swiper( + autoplay: widget.logic.bannerList.length > 1, + controller: widget.logic.swiperController, + autoplayDelay: 6000, + loop: widget.logic.bannerList.length > 1 ? true : false, + // index:logic.index, + itemBuilder: (BuildContext context, int index) { + return GestureDetector( + onTap: () async { + // print(logic.bannerList[index].param); + navigateToCustomRoute(widget.logic.bannerList[index]); + }, + child: SizedBox( + width: Get.width, + child: ClipRRect( + borderRadius: BorderRadius.circular(15.sp), + child: CachedNetworkImage( + imageUrl: widget.logic.bannerList[index].picUrl, + fit: BoxFit.fill, + width: Get.width, + ), + )), + ); + }, + itemCount: widget.logic.bannerList.length, + pagination: SwiperPagination( + margin: EdgeInsets.all(5.0.sp), // 设置外边距 + alignment: Alignment.bottomCenter, + builder: DotSwiperPaginationBuilder( + color: Color(0x00FFFFFF), // 小圆点的颜色 + activeColor: widget.logic.bannerList.length == 1 + ? Color(0x00FFFFFF) + : Color(0x00FFFFFF), // 当前索引小圆点的颜色 + ), + ), +// control: new SwiperControl(), //左右的那个箭头,在某模拟器中会出现蓝线 + ), + ); + } + + Widget circleList(CircleLogic controller) { + return Swiper( + itemBuilder: (BuildContext context, int index) { + var bean = widget.logic.circle.lists[index]; + // final GlobalKey infoListViewKey = GlobalKey(); + return InfoListView(index, bean, widget.logic); + }, + onIndexChanged: (index) { + controller.state.index = index; + if (index == widget.logic.circle.lists.length - 1) { + widget.logic.loadMore(); + } + print(index.toString()); + }, + index: controller.state.index, + itemCount: widget.logic.circle.lists.length, + viewportFraction: 0.93, + // scale: 0.9, + loop: false, + // key: UniqueKey(), + // pagination: new SwiperPagination(),//如果不填则不显示指示点 + // control: new SwiperControl(),//如果不填则不显示左右按钮 + ); + } + + Widget showVipView() { + return Container( + margin: EdgeInsets.only(top: 10.sp), + color: const Color(0xB30B011B), + padding: EdgeInsets.symmetric(vertical: 14.sp, horizontal: 20.sp), + child: Column( + children: [ + Center( + child: Text( + "VIP特权", + style: TextStyle(color: Colors.white, fontSize: 16.sp), + ), + ), + Container( + padding: EdgeInsets.only(top: 18.sp), + child: Text( + "开通VIP后,才能查看更多附近的圈友,也可以根据您的喜好、属性、角色、取向等筛选出想要认识的人,还可以获得其他十几种会员特权,拥有更多不一样的体验", + style: TextStyle(color: Colors.white, fontSize: 12.sp), + ), + ), + GestureDetector( + onTap: () async { + widget.logic.showRechargeDialog(); + }, + child: Center( + child: Container( + margin: EdgeInsets.only(top: 14.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17), + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + padding: EdgeInsets.symmetric( + vertical: 10.sp, + horizontal: 55.sp, + ), + child: const Text( + "前往开通VIP", + style: TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + )) + ], + )); + } + + Widget ListItem(VicinityItemBean item, int index) { + return GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.UserInfoActivity, arguments: item.id.toString()); + }, + child: Container( + margin: EdgeInsets.only(top: 10.sp), + // padding: EdgeInsets.only( left: 8.sp, right: 8.sp), + width: Get.width, + height: 200.sp, + decoration: BoxDecoration( + image: DecorationImage( + fit: BoxFit.fill, + image: AssetImage( + getCircleImage('pic_bg'), + ))), + child: Stack( + children: [ + Container( + margin: EdgeInsets.only(top: 1.sp, left: 1.sp, right: 1.sp), + child: ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10.sp), + topRight: Radius.circular(10.sp), + ), + child: item.images.length == 0 + ? Image( + image: AssetImage(getCircleImage("icon_list_null")), + width: Get.width, + fit: BoxFit.fill, + height: 92.sp, + ) + : Container(), + ), + ), + Column(children: [ + Container( + margin: EdgeInsets.only(right: 2.sp), + child: Row( + children: [ + Container( + margin: EdgeInsets.only(top: 6.sp, left: 8.sp), + width: 88.sp, + height: 88.sp, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.0), + gradient: const LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color(0xFF71F3F2), + Color(0xFFF558FF), + ], + stops: [0.0365, 0.9427], + ), + ), + padding: EdgeInsets.all(2.sp), + child: ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Image.network(item.avatarThumb, + width: 88.sp, height: 88.sp, fit: BoxFit.cover), + ), + ), + Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Container( + margin: EdgeInsets.only(top: 6.sp), + child: Row( + children: [ + for (int i = 0; i < item.images.length; i++) + GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Swiper, + arguments: { + 'imaglist': item.images, + 'index': i + }); + }, + child: ListAlbumItem(item.images[i], i)), + ], + ), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.only(top: 6.sp, left: 9.sp), + child: Row( + children: [ + Text( + item.nickname, + style: TextStyle( + fontWeight: FontWeight.bold, + color: const Color.fromRGBO(247, 250, 250, 1.0), + fontSize: 16.sp, + ), + ), + SizedBox(width: 8.sp), + _buildInfoRow(item), + const Spacer(), + Container( + margin: EdgeInsets.only(right: 8.sp), + child: Text( + item.onlineFlag.toString(), + style: TextStyle( + color: const Color.fromRGBO(247, 250, 250, 1.0), + fontSize: 12.sp, + ), + )), + ], + ), + ), + Container( + height: 50.sp, // 设置固定高度 + width: Get.width, + margin: EdgeInsets.symmetric(horizontal: 8.0), + child: Align( + alignment: Alignment.centerLeft, // 文本左对齐,垂直居中 + child: Text( + item.signature, + maxLines: 2, + style: TextStyle(color: Colors.white, fontSize: 14.sp), + overflow: TextOverflow.ellipsis, + ), + ), + ), + Container( + margin: EdgeInsets.only(left: 8.sp, right: 3.sp), + child: _buildInterestsListView(item.interests)) + ]), + ], + )), + ); + } + + Widget ListAlbumItem(String item, int index) { + return Container( + margin: EdgeInsets.symmetric(horizontal: 2.sp), + child: CachedNetworkImage( + width: 88.sp, + height: 88.sp, + fit: BoxFit.cover, + imageUrl: item + "?imageView2/1/w/176/h/176/q/75", + ), + ); + } + + Widget _buildInfoRow(VicinityItemBean item) { + String ageMsg = + getAgeCOntent(item!.gender, item!.age, item!.role, item!.orientation); + return Row( + children: [ + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17), + gradient: const LinearGradient( + colors: [ + Color.fromRGBO(141, 255, 248, 1.0), + Color.fromRGBO(181, 211, 255, 1.0), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + padding: EdgeInsets.only( + top: 2.sp, + bottom: 2.sp, + left: 10.sp, + right: 10.sp, + ), + child: Text( + ageMsg, + style: const TextStyle( + color: Colors.black, + fontSize: 10, + ), + ), + ), + const SizedBox(width: 6), + if (item.vip > 0) + Image( + image: AssetImage(getBaseImage(item.vip == 1 ? "vip" : 'year_vip')), + width: 44.sp, + height: 18.sp, + ), + ], + ); + } + + Widget _buildInterestsListView(List interests) { + return Align( + alignment: Alignment.centerLeft, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + for (int index = 0; index < interests.length; index++) + GestureDetector( + onTap: () { + Get.toNamed(AppRoutes.Signal_circle_list, + arguments: interests[index].id); + }, + child: Container( + margin: EdgeInsets.only(right: 11.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + ), + color: const Color(0xFF392D53), + ), + child: Container( + margin: EdgeInsets.all(0.2.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(17.0), + color: const Color(0xFF392D53), + ), + child: Padding( + padding: EdgeInsets.only( + top: 2.sp, + bottom: 2.sp, + left: 15.sp, + right: 15.sp, + ), + child: Center( + child: Text( + interests[index].title, + style: const TextStyle( + fontSize: 13.0, + color: Colors.white, + ), + ), + ), + ), + ), + ), + ), + ], + ), + ), + ); + } + + void _onRefresh() async { + widget.logic.vicinityPage = 1; + widget.logic.offset = 0; + widget.logic.getNearByList(); + // logic.refreshController.refreshCompleted(); + } + + void _onLoading() async { + if (widget.logic.myVip > 0) { + widget.logic.vicinityPage = widget.logic.vicinityPage + 1; + // logic.offset = 0; + // + widget.logic.getNearByList(); + } else { + widget.logic.refreshController.loadComplete(); + } + } + + @override + // TODO: implement wantKeepAlive + bool get wantKeepAlive => true; +} diff --git a/circle_app/lib/app/login/complete_material/logic.dart b/circle_app/lib/app/login/complete_material/logic.dart index bfe21e6..a900f18 100644 --- a/circle_app/lib/app/login/complete_material/logic.dart +++ b/circle_app/lib/app/login/complete_material/logic.dart @@ -32,6 +32,8 @@ class Complete_materialLogic extends GetxController { var quToken = ''; var headUrl = ''; + int unLockWxNum = 0; + late ConfigBean configBean; List numbers = []; @@ -51,7 +53,10 @@ class Complete_materialLogic extends GetxController { var bean = BaseResponse.fromJson( data, (data) => ResponseBean.fromJson(data)); if(bean.isSuccess()){ + unLockWxNum = bean.data.unLockWxNum; + userInfoBean = bean.data.user; + state.wxEditingController.text = userInfoBean!.wx_num ; state.nickName = userInfoBean!.nickname; state.sex = getGenderContent(userInfoBean!.gender); state.genderId = userInfoBean!.gender.toString(); @@ -225,6 +230,26 @@ class Complete_materialLogic extends GetxController { showOKToast('请上传头像'); return; } + + if (state.wxEditingController.text.isNotEmpty) { + bool isPass = false; + if (state.wxEditingController.text.length == 11) { + RegExp exp = RegExp( + r'^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$'); + isPass = exp.hasMatch(state.wxEditingController.text); + } + + if (state.wxEditingController.text.isNotEmpty && !isPass) { + RegExp wxReg = RegExp(r'^[a-zA-Z][-_a-zA-Z0-9]{5,19}$'); + if (!wxReg.hasMatch(state.wxEditingController.text)) { + showOKToast('请输入正确的微信号'); + return; + } + } + + var result = await DioManager().post(url: Api.updateWxNum,params: {'type':2,'wxNum':state.wxEditingController.text}); + print(result); + } //TODO 强制获取经纬度 // LatLng location = await getLocation(); List interestsList = []; diff --git a/circle_app/lib/app/login/complete_material/state.dart b/circle_app/lib/app/login/complete_material/state.dart index 32a000d..6179c9d 100644 --- a/circle_app/lib/app/login/complete_material/state.dart +++ b/circle_app/lib/app/login/complete_material/state.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; class Complete_materialState { TextEditingController textEditingController = TextEditingController(); + TextEditingController wxEditingController = TextEditingController(); TextEditingController descEditingController = TextEditingController(); String nickName = ''; String sex = ''; diff --git a/circle_app/lib/app/login/complete_material/view.dart b/circle_app/lib/app/login/complete_material/view.dart index fb439cf..ece378f 100644 --- a/circle_app/lib/app/login/complete_material/view.dart +++ b/circle_app/lib/app/login/complete_material/view.dart @@ -111,6 +111,33 @@ class Complete_materialPage extends StatelessWidget { ), () {}, img: 'edit'), + if (Get.arguments == 'user') + funcWidget( + '微信', + TextField( + controller: controller.state.wxEditingController, + maxLength: 19, + inputFormatters: [ + FilteringTextInputFormatter.deny( + RegExp("[^-_a-zA-Z0-9]")), + ], + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.w500, + fontSize: 14.sp), + decoration: InputDecoration( + counterText:'', + hintText: '请输入微信号', + hintStyle: TextStyle( + color: Colors.white, + fontWeight: FontWeight.w500, + fontSize: 14.sp), + border: InputBorder.none, + ), + ), + () {}, + img: 'edit'), + funcWidget( '属性', Text( diff --git a/circle_app/lib/app/login/login/logic.dart b/circle_app/lib/app/login/login/logic.dart index fc15aec..d6a3de1 100644 --- a/circle_app/lib/app/login/login/logic.dart +++ b/circle_app/lib/app/login/login/logic.dart @@ -68,8 +68,10 @@ class LoginLogic extends GetxController { showOKToast('发送成功!'); if (kDebugMode) { //print("验证码:${bean.data!.code}"); - // codeEditingController.text = bean.data!.code.toString(); - // update(); + if (bean.data!.code != null) { + codeEditingController.text = bean.data!.code.toString(); + update(); + } } t = Timer.periodic(const Duration(milliseconds: 1000), (timer) { diff --git a/circle_app/lib/app/userinfo/logic.dart b/circle_app/lib/app/userinfo/logic.dart index 479bccb..c8cd717 100644 --- a/circle_app/lib/app/userinfo/logic.dart +++ b/circle_app/lib/app/userinfo/logic.dart @@ -42,6 +42,8 @@ class UserinfoLogic extends GetxController { bool isBlack = false; bool isBlackBeen = false; bool isDestroy = false; + + int unLockWxNum = 0; final startTime = DateTime.now(); SharedPreferences? sharedPreferences; @override @@ -111,7 +113,7 @@ class UserinfoLogic extends GetxController { if (bean.isSuccess()) { isMe = userId.isEmpty; isLike = bean.data.isFollow; - + unLockWxNum = bean.data.unLockWxNum; isLikeFoMsg = "${bean.data.likeMeCount}位圈友感兴趣,其中${bean.data.imageUrgeCount}位已催您更新"; userInfoBean = bean.data.user; @@ -322,6 +324,7 @@ class UserBean { String nickname; String avatar; String birthday; + String wx_num; int age; String signature; int vip; @@ -340,6 +343,7 @@ class UserBean { required this.id, required this.nickname, required this.avatar, + required this.wx_num, required this.birthday, required this.age, required this.signature, @@ -359,6 +363,7 @@ class UserBean { factory UserBean.fromJson(Map json) { return UserBean( id: json['id'], + wx_num: json['wx_num'] ?? '', nickname: json['nickname'], avatar: json['avatar'], birthday: json['birthday'], @@ -404,6 +409,7 @@ class ResponseBean { UserBean user; int likeMeCount; int imageUrgeCount; + int unLockWxNum; bool isFollow; bool isBlock; bool isDestroy; @@ -413,6 +419,7 @@ class ResponseBean { {required this.user, required this.likeMeCount, required this.imageUrgeCount, + required this.unLockWxNum, required this.accountId, required this.isBlock, required this.isDestroy, @@ -421,6 +428,7 @@ class ResponseBean { factory ResponseBean.fromJson(Map json) { return ResponseBean( accountId: json['account_id'], + unLockWxNum : json['unLockWxNum'], user: UserBean.fromJson(json['user']), likeMeCount: json['like_me_count'], imageUrgeCount: json['image_urge_count'], diff --git a/circle_app/lib/app/userinfo/view.dart b/circle_app/lib/app/userinfo/view.dart index 78a2b2b..04c6f52 100644 --- a/circle_app/lib/app/userinfo/view.dart +++ b/circle_app/lib/app/userinfo/view.dart @@ -1,5 +1,8 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:circle_app/app/userinfo/widgets/home_call_out.dart'; +import 'package:circle_app/common/Widgets/base_tip_widget.dart'; +import 'package:circle_app/common/colors/app_color.dart'; +import 'package:circle_app/common/const.dart'; import 'package:circle_app/main.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -78,6 +81,60 @@ class MyTabbedScreenState extends State centerTitle: logic.userInfoBean != null ? "${logic.userInfoBean!.nickname}的主页" : "个人主页", + actionWdiget: logic.isMe ? GestureDetector( + onTap: () { + showAddWxPicker(logic.userInfoBean!.wx_num!.isNotEmpty ?? false); + }, + child:Stack( + alignment: Alignment.center, + children: [ + Container( + width: 90.sp, + height: 24.sp, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.sp), + gradient: LinearGradient( + colors: [ Color(0xFF30FFD9),Color(0xFFDD3DF4)], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ), + ), + Container( + width: 88.sp, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(11.sp), + color: Color(0xFF240F3B) + + ), + alignment: Alignment.center, + height: 22.sp, + child: Text( + '填写微信号', + style: TextStyle( + color: Colors.white, fontSize: 12.sp), + ), + ) + ], + ), + // Container( + // alignment: Alignment.center, + // // width: 90.sp, + // height: 24.sp, + // padding: + // EdgeInsets.only(left: 6.sp, right: 6.sp), + // decoration: BoxDecoration( + // color: AppColor.mainColor, + // borderRadius: + // BorderRadiusDirectional.circular( + // 11.sp)), + // child: Text( + // '填写微信号', + // style: TextStyle( + // color: Colors.white, fontSize: 13.sp), + // ), + // ), + ) : Container() ), body: Stack( children: [ @@ -327,7 +384,21 @@ class MyTabbedScreenState extends State ? Container() : _buildInterestsListView(interests), ), + + if (!logic.isMe) + logic.userInfoBean != null ? logic.userInfoBean!.wx_num!.isNotEmpty ? Container( + alignment: Alignment.centerLeft, + // width: 200.sp, + // color: Colors.red, + margin: EdgeInsets.only(left: 20.sp,bottom: 15.sp), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + wxStatusWidget(logic.unLockWxNum == 1,logic.userInfoBean!.wx_num, logic.userInfoBean!.id.toString(),logic.userInfoBean!.avatar!, (){}), + ], + )) : Container() : Container(), titleTab(controller), + Expanded( child: PageView( controller: _pageController, @@ -469,6 +540,7 @@ class MyTabbedScreenState extends State child: Visibility( // visible: logic.isShowAlbum, child: Container( + margin: EdgeInsets.only(left: 10.sp), decoration: BoxDecoration( borderRadius: BorderRadius.circular(17), gradient: const LinearGradient( diff --git a/circle_app/lib/common/Widgets/add_wx_tip.dart b/circle_app/lib/common/Widgets/add_wx_tip.dart new file mode 100644 index 0000000..eec81ff --- /dev/null +++ b/circle_app/lib/common/Widgets/add_wx_tip.dart @@ -0,0 +1,199 @@ +import 'package:circle_app/common/colors/app_color.dart'; +import 'package:circle_app/network/api.dart'; +import 'package:circle_app/network/dio_manager.dart'; +import 'package:circle_app/router/app_routers.dart'; +import 'package:circle_app/util/util.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:get/get.dart'; + +class AddWxTip extends StatefulWidget { + bool isHaveWx; + // TODO: add state variables, methods and constructor params + AddWxTip(this.isHaveWx); + + @override + State createState() => _AddWxTipState(); +} + +class _AddWxTipState extends State { + bool isAuth = false; + String desc = ''; + String tip = ''; + String title = ''; + @override + void initState() { + // TODO: implement initState + super.initState(); + loadData(); + } + + @override + Widget build(BuildContext context) { + // TODO: add widget build method + return Scaffold( + backgroundColor: Colors.transparent, + body: Center( + child: Container( + margin: EdgeInsets.only(left: 15.sp, right: 15.sp), + + height: Get.height * 0.65, + + child: Column( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration( + color: Color(0x99000000), + image: DecorationImage( + image: AssetImage(getHomeImage("wx_tip_bg")), + + fit: BoxFit.fill, + ), + ), + child: Container( + color: Color(0x99000000).withOpacity(0.4), + padding: EdgeInsets.all(6.sp), + child: Column( + children: [ + Expanded( + child: Container( + + child: RawScrollbar( + radius: Radius.circular(20), + // isAlwaysShown: true, + thickness: 2, + thumbColor: Colors.white, + child: SingleChildScrollView( + child: Column( + children: [ + Container( + margin: EdgeInsets.only(top: 10.sp,bottom: 5.sp), + + child: Image.asset(getHomeImage('wx_tip_title'),height: 18.sp,)), + Container( + padding: EdgeInsets.only(left: 15.sp, right: 15.sp), + child: Text( + desc, + style: TextStyle( + color: Colors.white, + fontSize: 14.sp, + fontWeight: FontWeight.w500, + height: 2.0, + ), + )), + Container( + padding: EdgeInsets.only(left: 15.sp, right: 15.sp), + child: Text( + tip, + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.w500, + fontSize: 14.sp, + height: 2.0, + ), + )) + ], + ), + ), + ), + )), + Container( + margin: EdgeInsets.only(top: 15.sp, right: 15.sp, left: 15.sp,bottom: 15.sp), + child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Expanded(child: Container()), + GestureDetector( + onTap: () async { + showOKToast('为了维护站内的社交环境,微信填写必须真实哦~'); + + var result = await DioManager() + .post(url: Api.updateWxNum, params: {'type': 1}); + if (result['code'] == 200) { + Future.delayed(Duration(seconds: 2),() {showOKToast('填写微信成功');}); + Get.back(result: '1'); + } + + }, + child: Container( + alignment: Alignment.center, + height: 30.sp, + width: 100.sp, + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.9), + borderRadius: BorderRadius.circular(4.sp)), + child: Text( + '手机号即微信', + style: + TextStyle(color: Colors.white, fontSize: 14.sp), + ), + ), + ), + Expanded(child: Container()), + GestureDetector( + onTap: () { + showOKToast('为了维护站内的社交环境,微信填写必须真实哦~'); + Get.back(); + Get.toNamed( + AppRoutes.Complete_materialPage, + arguments: "user", + ); + }, + child: Container( + height: 30.sp, + width: 100.sp, + + // padding: EdgeInsets.only(left: 6.sp, right: 6.sp), + alignment: Alignment.center, + decoration: BoxDecoration( + color: AppColor.mainColor, + borderRadius: BorderRadius.circular(4.sp)), + child: Text( + widget.isHaveWx ? ' 更新微信 ':' 填写微信 ', + style: + TextStyle(color: Colors.white, fontSize: 14.sp), + ), + ), + ), + Expanded(child: Container()), + ], + ), + ), + ], + ), + ), + ), + ), + + GestureDetector( + onTap: () { + Get.back(); + }, + child: Container( + margin: EdgeInsets.only(bottom: 5.sp,top: 10.sp), + alignment: Alignment.center, + child: Image.asset( + getHomeImage('wx_close'), + width: 24.sp, + )), + ) + ], + ), + ), + ), + ); + } + + void loadData() async { + var data1 = await DioManager.instance.get(url: Api.popWxNumStr); + + desc = data1['content'] ?? ''; + title = data1['title'] ?? ''; + tip = data1['tip'] ?? ''; + setState(() {}); + + + } +} diff --git a/circle_app/lib/common/Widgets/base_tip_widget.dart b/circle_app/lib/common/Widgets/base_tip_widget.dart index caf1949..8b2eeac 100644 --- a/circle_app/lib/common/Widgets/base_tip_widget.dart +++ b/circle_app/lib/common/Widgets/base_tip_widget.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:circle_app/common/Widgets/add_wx_tip.dart'; import 'package:circle_app/util/paymentUtil.dart'; import 'package:circle_app/util/util.dart'; import 'package:flutter/material.dart'; @@ -266,3 +267,9 @@ showJoinCiclePiker(String cicleId, String pirce, String oldPrice, int type, isScrollControlled: true, enableDrag: false); } + + + +Future showAddWxPicker(bool isHaveWx) { + return Get.bottomSheet(AddWxTip(isHaveWx),isScrollControlled: true,enableDrag: false); +} \ No newline at end of file diff --git a/circle_app/lib/common/Widgets/genderview.dart b/circle_app/lib/common/Widgets/genderview.dart new file mode 100644 index 0000000..7e06c86 --- /dev/null +++ b/circle_app/lib/common/Widgets/genderview.dart @@ -0,0 +1,186 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + + +Widget getGender(String name) { + if (name == "CD") { + return getCd(); + } else if (name == "MTF") { + return getMTF(); + } + else if(name == "Queer"){ + return getQueer(); + } + else if(name == "FTM"){ + return getFTM(); + } + else if(name == "直男"||name == "男"){ + return getZN(); + } + else if(name == "真女"||name == "女"){ + return getNV(); + }else{ + return getCd(); + } +} +Color getGenderColor(String name){ + if (name == "CD") { + return cd; + } else if (name == "MTF") { + return mtf; + } + else if(name == "Queer"){ + return queer; + } + else if(name == "FTM"){ + return ftm; + } + else if(name == "直男"||name == "男"){ + return nan; + } + else if(name == "真女"||name == "女"){ + return nv; + }else{ + return cd; + } +} + +Color cd = const Color(0xFFF7FAFA); +Color mtf = const Color(0xFFFAA5B8); +Color queer = const Color(0xFF876FE7); +Color ftm = const Color(0xFF42C6FF); +Color nan = const Color(0xFF3994FF); +Color nv = const Color(0xFFFC65ED); + +Widget getCd() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFFF7FAFA), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "CD", + style: TextStyle( + color: const Color(0xFF898F99), + fontSize: 12.0.sp, + ), + ), + ); +} + +Widget getMTF() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFFFAA5B8), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "MTF", + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 12.0.sp, + ), + ), + ); +} + +Widget getQueer() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFF876FE7), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "Queer", + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 12.0.sp, + ), + ), + ); +} + +Widget getFTM() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFF42C6FF), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "FTM", + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 12.0.sp, + ), + ), + ); +} + +Widget getZN() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFF3994FF), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "直男", + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 12.0.sp, + ), + ), + ); +} + +Widget getNV() { + return Container( + padding: EdgeInsets.only(left: 3.sp, right: 3.sp, top: 3.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(22), + color: const Color(0xFFFC65ED), + + // border: Border.all( + // color: logic.wantKnowData[index].isSelect ? const Color(0xFFCE51FF) : const Color(0x1AFFFFFF), + // ), + ), + margin: EdgeInsets.only(left: 10.0.sp), + child: Text( + "真女", + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 12.0.sp, + ), + ), + ); +} \ No newline at end of file diff --git a/circle_app/lib/common/Widgets/unlock_wx_tip.dart b/circle_app/lib/common/Widgets/unlock_wx_tip.dart new file mode 100644 index 0000000..aa8bd91 --- /dev/null +++ b/circle_app/lib/common/Widgets/unlock_wx_tip.dart @@ -0,0 +1,442 @@ +import 'dart:io'; + +import 'package:circle_app/common/Widgets/open_vip_tip/logic.dart'; +import 'package:circle_app/network/api.dart'; +import 'package:circle_app/network/dio_manager.dart'; +import 'package:circle_app/util/PaymentUtils.dart'; +import 'package:circle_app/util/paymentUtil.dart'; +import 'package:circle_app/util/util.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:get/get.dart'; + +import 'base_tip_widget.dart'; + +class UnlockWxTip extends StatefulWidget { + String userId; + String avatarUrl; + UnlockWxTip(this.userId,this.avatarUrl); + @override + _UnlockWxTipState createState() => _UnlockWxTipState(); + +} + +class _UnlockWxTipState extends State { + // TODO: add state variables and methods + List prices = []; + int selectedIndex = 0; + + bool isZfbPrice = false; + + @override + void initState() { + // TODO: implement initState + super.initState(); + loadData(); + } + + @override + Widget build(BuildContext context) { + // TODO: add widget build method + return Scaffold( + backgroundColor: Colors.transparent, + body: Stack( + alignment: Alignment.center, + children:[ + Container(width: Get.width,height: Get.height,), + Stack( + children: [ + Container( + margin: EdgeInsets.only(left: 20.sp,right: 20.sp), + padding: EdgeInsets.all(15.sp), + height: !Platform.isIOS ? 440.sp : 410.sp, + decoration: BoxDecoration( + color: const Color(0xFF393949), + borderRadius: BorderRadius.circular(10.sp) + ), + child: Column( + children: [ + Container( + margin: EdgeInsets.only(bottom: 10.sp), + alignment: Alignment.center, + child: ClipOval(child: Image.network(widget.avatarUrl,width: 60.sp,height: 60.sp,fit: BoxFit.cover,)), + ), + + Text( + '解锁TA的微信之外,还可以解锁更多微信哦~', + style: TextStyle( + color: const Color(0xFFF7FAFA), fontSize: 13.0.sp), + ), + SizedBox(height: 10.0.sp), + + Expanded(child: Container( + // color: Colors.red, + child: ListView.builder( + // shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: prices.length, + itemBuilder: (context, index) { + return itemView( + context,prices[index], index); + }, + ), + ),), + Platform.isIOS + ? Container( + ) + : Container( + padding: EdgeInsets.only(bottom: 12.0.sp,top: 12.sp), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + onTap: () { + setState(() { + isZfbPrice = true; + }); + }, + child: Row( + children: [ + Image.asset( + isZfbPrice + ? getMineImage("icon_pay_select") + : getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_ali'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '支付宝支付', + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + SizedBox(width: 4.0.sp), + Image.asset( + getMineImage('icon_recommend_pay_way'), + width: 32.0.sp, + height: 16.0.sp, + ), + ], + ), + ), + SizedBox(width: 24.0.sp), + GestureDetector( + onTap: () { + setState(() { + isZfbPrice = false; + }); + }, + child: Row( + children: [ + Image.asset( + !isZfbPrice + ? getMineImage("icon_pay_select") + : getMineImage("icon_pay_is_no_select"), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 8.0.sp), + Image.asset( + getMineImage('icon_cooperate_wx'), + width: 20.0.sp, + height: 20.0.sp, + ), + SizedBox(width: 4.0.sp), + Text( + '微信支付', + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 14.0.sp, + ), + ), + ], + ), + ), + ], + ), + ), + GestureDetector( + onTap: () { + SmartDialog.showLoading(); + String itemId = prices[selectedIndex].itemId!; + if (Platform.isIOS ) { + IOSPayment.instance.iosPay(itemId,itemId,3,userId:widget.userId); + } else { + unlockingPayment(prices[selectedIndex].id.toString(), (){ + Get.back(); + unLockWxSuccessResult(widget.userId); + }); + } + }, + child: Container( + height: 40.sp, + width: Get.width, + decoration: BoxDecoration( + + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + borderRadius: BorderRadius.circular(21.0), + ), + child: Center( + child: Text( + '立即解锁', + style: TextStyle( + color: const Color(0xFFF7FAFA), + fontSize: 14.0.sp), + ), + ), + ), + ), + + ], + ), + ), + Positioned( + top: 8.sp, + right: 20.sp, + child: IconButton( + icon: const Icon(Icons.close, color: Colors.white), + onPressed: () => Get.back(result: 1), + ), + ), + ], + ), + ] , + + ), + ); + } + + Widget itemView(BuildContext context,Prices price, int index) { + // int present_bean = item.note['present_bean']; + + String iconIv = ''; + switch (index) { + case 0: + iconIv = getMineImage("icon_recharge_first"); + break; + case 1: + iconIv = getMineImage("icon_recharge_second"); + break; + case 2: + iconIv = getMineImage("icon_recharge_third"); + break; + case 3: + iconIv = getMineImage("icon_recharge_fourth"); + break; + } + + return GestureDetector( + onTap: () { + selectedIndex = index; + setState(() { + + }); + }, + child: Container( + height: 49.sp, + margin: const EdgeInsets.only(bottom: 10), + decoration: BoxDecoration( + color: index == selectedIndex + ? const Color(0xFF464556) + : const Color(0xFF464556), + borderRadius: BorderRadius.circular(6), + border: index == selectedIndex + ? Border.all(color: const Color(0xFF21BEAB), width: 1.sp) + : null, + ), + child: Container( + margin: EdgeInsets.only(left: 6.sp, right: 6.sp), + child: Row( + children: [ + Image.asset( + iconIv, // Replace this with the actual image path + width: 31.sp, + height: 29.sp, + ), + SizedBox(width: 8.sp), + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + price.desc!, + + style: TextStyle(color: Colors.white, fontSize: 14.sp), + ), + + Text( + + "同时对方可获得${price.bonus}跨豆", + style: TextStyle( + color: const Color(0xFFEFD84E), fontSize: 10.0.sp), + ), + ],), + Expanded(child: Container()), + // To push the next widget to the right edge + Text( + '${price.curPrice}元', + style: TextStyle(color: Colors.white, fontSize: 14.sp), + ), + ], + ), + ), + )); + } + + + unlockingPayment(String cicleId, Function resultCallback) async { + SmartDialog.showLoading(); + if (isZfbPrice) { + var data = await DioManager.instance.post( + url: Api.postAliPayOrder, params: {"product_id": cicleId, "type": 3,'target_id':widget.userId}); + var bean = BaseResponse.fromJson( + data, (data) => PayUrlBean.fromJson(data)); + if (bean.isSuccess()) { + openAliPay(bean.data.payUrl, (isSuccess, errorMsg) { + if (isSuccess) { + resultCallback(true); + } + }); + // showToast(data.toString()); + } else { + showOKToast(bean.msg); + } + } else { + var data = await DioManager.instance + .post(url: Api.postWxOrder, params: {"product_id": cicleId, "type": 3,'target_id':widget.userId}); + var bean = BaseResponse.fromJson( + data, (data) => PaymentData.fromJson(data)); + if (bean.isSuccess()) { + openWxPay(bean.data, (bool isSuccess, String? errorMessage) { + if (isSuccess) { + resultCallback(true); + } else { + // 处理支付失败,errorMessage 可能为 null + } + }); + } else { + showOKToast(bean.msg); + } + + } + SmartDialog.dismiss(); + } + + + void loadData() async { + var result = await DioManager().get(url: Api.queryUnlockPrice); + if (result['code'] == 200) { + var data = Autogenerated.fromJson(result); + if (data.prices != null) { + prices = data.prices!; + setState(() { + + }); + } + } + } +} + + +class Autogenerated { + int? code; + String? msg; + List? prices; + + Autogenerated({this.code, this.msg, this.prices}); + + Autogenerated.fromJson(Map json) { + code = json['code']; + msg = json['msg']; + if (json['data'] != null) { + prices = []; + json['data'].forEach((v) { + prices!.add(new Prices.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = new Map(); + data['code'] = this.code; + data['msg'] = this.msg; + if (this.prices != null) { + data['prices'] = this.prices!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class Prices { + int? bonus; + double? curPrice; + String? desc; + int? expireTime; + int? expireType; + int? id; + String? itemId; + int? oldPrice; + int? show; + int? timesNum; + int? timesNumType; + + Prices( + {this.bonus, + this.curPrice, + this.desc, + this.expireTime, + this.expireType, + this.id, + this.itemId, + this.oldPrice, + this.show, + this.timesNum, + this.timesNumType}); + + Prices.fromJson(Map json) { + bonus = json['bonus']; + curPrice = double.parse(json['curPrice'].toString()); + desc = json['desc']; + expireTime = json['expireTime']; + expireType = json['expireType']; + id = json['id']; + itemId = json['itemId']; + oldPrice = json['oldPrice']; + show = json['show']; + timesNum = json['timesNum']; + timesNumType = json['timesNumType']; + } + + Map toJson() { + final Map data = new Map(); + data['bonus'] = this.bonus; + data['curPrice'] = this.curPrice; + data['desc'] = this.desc; + data['expireTime'] = this.expireTime; + data['expireType'] = this.expireType; + data['id'] = this.id; + data['itemId'] = this.itemId; + data['oldPrice'] = this.oldPrice; + data['show'] = this.show; + data['timesNum'] = this.timesNum; + data['timesNumType'] = this.timesNumType; + return data; + } +} + diff --git a/circle_app/lib/common/colors/app_color.dart b/circle_app/lib/common/colors/app_color.dart new file mode 100644 index 0000000..2df2bf4 --- /dev/null +++ b/circle_app/lib/common/colors/app_color.dart @@ -0,0 +1,16 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +class AppColor { + static Color mainColor = Color(0xFFCE51FF); + + static Gradient mainLinearGradient = const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ); +} diff --git a/circle_app/lib/common/const.dart b/circle_app/lib/common/const.dart new file mode 100644 index 0000000..db4224a --- /dev/null +++ b/circle_app/lib/common/const.dart @@ -0,0 +1,91 @@ +import 'package:circle_app/common/Widgets/unlock_wx_tip.dart'; +import 'package:circle_app/network/api.dart'; +import 'package:circle_app/network/dio_manager.dart'; +import 'package:circle_app/util/util.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:oktoast/oktoast.dart'; + +const bgAssetImage = DecorationImage( + image: AssetImage('assets/images/base/bg.png'), + fit: BoxFit.cover, +); + +const bgBoxDecoration = BoxDecoration(image: bgAssetImage); + +wxStatusWidget(bool isUnclock, String wx, String userId, String avatarUrl, + Function callBack) { + double textWidth = boundingTextSize(Get.context!, wx, TextStyle(color: Colors.white, fontSize: 16.sp)).width; + return GestureDetector( + onTap: () async { + if (!isUnclock) { + var result = await DioManager() + .post(url: Api.UnlockWx, params: {'targetUserId': userId}); + if (result['code'] == 200) { + callBack(); + } else { + Get.bottomSheet(UnlockWxTip(userId, avatarUrl), + isScrollControlled: true, enableDrag: false) + .then((value) { + if (value != null) { + callBack(); + } + }); + } + } else { + Clipboard.setData(ClipboardData(text: wx)); + showToast('微信号复制成功'); + } + }, + child: Container( + height: 42.sp, + width: (isUnclock ? 60.sp : 100.sp) + textWidth, + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [ + Color(0xFF06F9FA), + Color(0xFFDC5BFD), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + borderRadius: BorderRadius.circular(4.sp)), + child: Container( + // width: 88.sp, + margin: EdgeInsets.all(1.sp), + padding: EdgeInsets.only(left: 10.sp, right: 10.sp), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4.sp), + color: Color(0xFF240F3B)), + alignment: Alignment.center, + + child: Row( + children: [ + Image.asset( + getDisCoverImage('wx'), + width: 30.sp, + ), + SizedBox( + width: 4.sp, + ), + // Expanded( + Text( + wx, + style: TextStyle(color: Colors.white, fontSize: 16.sp), + ), + if (!isUnclock) + SizedBox( + width: 14.sp, + ), + if (!isUnclock) + Image.asset( + getDisCoverImage('unclock_icon'), + width: 30.sp, + ) + ], + ), + ), + )); +} diff --git a/circle_app/lib/common/values/values.dart b/circle_app/lib/common/values/values.dart index aca74c3..e229336 100644 --- a/circle_app/lib/common/values/values.dart +++ b/circle_app/lib/common/values/values.dart @@ -8,6 +8,6 @@ abstract class Values { static const String mine_images = 'assets/images/mine/'; static const String msg_images = 'assets/images/msg/'; static const String circle_images = 'assets/images/circle/'; - + static const String discover_images = 'assets/images/circle/'; } diff --git a/circle_app/lib/network/api.dart b/circle_app/lib/network/api.dart index c5cd958..bd99b30 100644 --- a/circle_app/lib/network/api.dart +++ b/circle_app/lib/network/api.dart @@ -1,10 +1,10 @@ class Api { - static const baseUrl = 'https://leyuan666.com/zuul-service/'; + // static const baseUrl = 'https://leyuan666.com/zuul-service/'; - // static const baseUrl = 'http://192.168.3.55:2000/' ; + static const baseUrl = 'http://192.168.3.55:2000/'; // 获取验证码 @@ -32,6 +32,10 @@ class Api { static const getVipPrice = 'mall-service/vips'; + //微信解锁配置信息 + static const queryUnlockPrice = '/mall-service/wxNum/unlock/queryUnlockPrice'; + + //支付宝支付 @@ -265,6 +269,24 @@ class Api { //填写邀请码 static const inviteFillIn = 'user-service/invite/fillin'; + //微信解锁 + static const UnlockWx = 'user-service/wxNum/unlock'; + //微信号填写文案 + static const popWxNumStr = 'user-service/content/popup/wxNum'; + + //微信号修改 + static const updateWxNum = 'user-service/updateWxNum'; + + + //发现数据 + static const findPage = 'user-service/findPage/userList'; + + + //不感兴趣 + static const uninterested = 'user-service/findPage/uninterested/'; + + //发现单个用户数据 + static const getFindPageUserByUserId = 'user-service/findPage/getUserByUserId'; } \ No newline at end of file diff --git a/circle_app/lib/router/app_pages.dart b/circle_app/lib/router/app_pages.dart index 14895eb..f23fe93 100644 --- a/circle_app/lib/router/app_pages.dart +++ b/circle_app/lib/router/app_pages.dart @@ -9,6 +9,7 @@ import 'package:circle_app/app/call_out/binding.dart'; import 'package:circle_app/app/call_out/view.dart'; import 'package:circle_app/app/chat/binding.dart'; import 'package:circle_app/app/chat/view.dart'; +import 'package:circle_app/app/circle/discover_page.dart'; import 'package:circle_app/app/circle/view.dart'; import 'package:circle_app/app/feedback/binding.dart'; import 'package:circle_app/app/feedback/view.dart'; @@ -121,12 +122,12 @@ class AppPages { ), GetPage( name: AppRoutes.UserInfoActivity, - page: () => UserinfoPage(), + page: () => UserinfoPage(), binding: UserinfoBinding(), ), GetPage( name: AppRoutes.Call_out, - page: () => Call_outPage() , + page: () => Call_outPage(), binding: Call_outBinding(), ), GetPage(name: AppRoutes.Login, page: () => LoginPage()), @@ -215,6 +216,6 @@ class AppPages { page: () => InvitePage(), binding: InviteBinding(), ), - + GetPage(name: AppRoutes.DisCover, page: () => DiscoverPage()) ]; } diff --git a/circle_app/lib/router/app_routers.dart b/circle_app/lib/router/app_routers.dart index 8b68f87..16495c0 100644 --- a/circle_app/lib/router/app_routers.dart +++ b/circle_app/lib/router/app_routers.dart @@ -36,6 +36,10 @@ abstract class AppRoutes { static const Invite = '/mine/invite'; + static const DisCover = '/DisCover'; + + + } \ No newline at end of file diff --git a/circle_app/lib/util/paymentUtil.dart b/circle_app/lib/util/paymentUtil.dart index ec12395..0b0fbab 100644 --- a/circle_app/lib/util/paymentUtil.dart +++ b/circle_app/lib/util/paymentUtil.dart @@ -37,11 +37,13 @@ class IOSPayment { // iOS订阅监听 StreamSubscription>? subscription; - //1圈子 2会员 + //1圈子 2会员 3解锁微信 int type = 0; //可以为解锁圈子ID、会员标识ID String typeId = ''; + String target_id = ''; + /// 判断是否可以使用支付 Future isAvailable() async => await _inAppPurchase.isAvailable(); @@ -77,13 +79,19 @@ class IOSPayment { if (purchaseDetails.status == PurchaseStatus.error) { showOKToast('支付发生错误'); } else if (purchaseDetails.status == PurchaseStatus.purchased) { - var result = await DioManager.getInstance() - .post(url: Api.applePayCallBack, params: { + Map params = { 'payload': purchaseDetails.verificationData.serverVerificationData, 'transaction_id': purchaseDetails.purchaseID, 'type': type, 'product_id': int.parse(typeId) - }); + }; + + if (type == 3) { + params['target_id'] = target_id; + } + + var result = await DioManager.getInstance() + .post(url: Api.applePayCallBack, params:params); SmartDialog.dismiss(); if (result['code'] == 200) { @@ -103,8 +111,11 @@ class IOSPayment { } logic.update(); } - } else { + } else if (type == 2) { showOKToast('开通会员成功'); + } else { + showOKToast('解锁微信号成功'); + unLockWxSuccessResult(target_id); } } await _inAppPurchase.completePurchase(purchaseDetails); @@ -153,7 +164,7 @@ class IOSPayment { } /// 启动支付 - void iosPay(String skuInfo, String typeID, int productType) async { + void iosPay(String skuInfo, String typeID, int productType,{String userId = ''}) async { if (!await isAvailable()) { SmartDialog.dismiss(); showOKToast('无法连接AppStore,请稍后再试'); @@ -174,6 +185,7 @@ class IOSPayment { return; } + target_id = userId; type = productType; typeId = typeID; diff --git a/circle_app/lib/util/util.dart b/circle_app/lib/util/util.dart index 0a271a6..126b8ad 100644 --- a/circle_app/lib/util/util.dart +++ b/circle_app/lib/util/util.dart @@ -2,9 +2,13 @@ import 'dart:convert'; import 'dart:io'; import 'dart:ui'; +import 'package:circle_app/app/circle/widgets/discover.dart'; +import 'package:circle_app/app/userinfo/logic.dart'; import 'package:circle_app/common/values/values.dart'; import 'package:circle_app/main.dart'; +import 'package:circle_app/network/api.dart'; import 'package:circle_app/router/app_routers.dart'; +import 'package:circle_app/util/eventBus.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -29,6 +33,10 @@ String getHomeImage(String image) { return '${Values.home_images}${image}.png'; } +String getDisCoverImage(String image) { + return '${Values.discover_images}${image}.png'; +} + String getLoginImage(String image) { return '${Values.login_images}${image}.png'; } @@ -57,6 +65,7 @@ String getCircleImage(String image) { showOKToast(String msg) { showToast( msg, + duration: Duration(seconds: msg.length > 10 ? 3 : 2), position: ToastPosition.center, backgroundColor: Colors.black.withOpacity(0.8), radius: 13.0, @@ -90,7 +99,7 @@ loaddingWidget(bool isMore) { ); } -noResultWidget() { +noResultWidget({String tip = '正在等待被填充~'}) { return Container( width: Get.width, child: Column( @@ -104,7 +113,7 @@ noResultWidget() { height: 8.sp, ), Text( - '正在等待被填充~', + tip, style: TextStyle(color: Color(0xffdbdbdb), fontSize: 15.sp), ), ], @@ -193,9 +202,9 @@ List orientationList = []; List roleList = []; String getGenderContent(int number) { - if(genderList.length!=0){ - return genderList[number-1]; - }else { + if (genderList.length != 0) { + return genderList[number - 1]; + } else { switch (number) { case 1: return "男"; @@ -216,9 +225,9 @@ String getGenderContent(int number) { } String getOrientationContent(int number) { - if(orientationList.length!=0){ - return orientationList[number-1]; - }else { + if (orientationList.length != 0) { + return orientationList[number - 1]; + } else { switch (number) { case 1: return "异性恋"; @@ -241,9 +250,9 @@ String getOrientationContent(int number) { } String getRoleContent(int number) { - if(roleList.length!=0){ - return roleList[number-1]; - }else { + if (roleList.length != 0) { + return roleList[number - 1]; + } else { switch (number) { case 1: return "Sado"; @@ -397,11 +406,12 @@ void navigateToCustomRoute(BannerItem bannerItem) { switch (bannerItem.scene) { case "scene_2": List numbers = []; - if(bannerItem.param!.isNotEmpty){ + if (bannerItem.param!.isNotEmpty) { String paramJson = bannerItem.param.toString(); paramJson = paramJson.replaceAll(r'\', ''); // 去除反斜杠转义 Map jsonData = json.decode(paramJson); - numbers.add(MyConfigData(jsonData['id'].toString(), jsonData['name'], false)); + numbers.add(MyConfigData( + jsonData['id'].toString(), jsonData['name'], false)); } Get.toNamed(AppRoutes.Call_out, arguments: {'numbers': numbers}); break; @@ -416,13 +426,38 @@ void navigateToCustomRoute(BannerItem bannerItem) { Get.toNamed(AppRoutes.Invite); break; case "scene_4": - if(bannerItem.param!.isEmpty){ + if (bannerItem.param!.isEmpty) { Get.toNamed(AppRoutes.UserInfoActivity); - }else{ - Get.toNamed(AppRoutes.UserInfoActivity, arguments: bannerItem.param.toString()); + } else { + Get.toNamed(AppRoutes.UserInfoActivity, + arguments: bannerItem.param.toString()); } break; } break; } } + +unLockWxSuccessResult(String userId) { + String currentRoute = Get.currentRoute; + if (currentRoute == AppRoutes.Home) { + EventBusManager.fire(DiscoverDataRefresh(userId)); + } else if (currentRoute == AppRoutes.UserInfoActivity) { + var logic = Get.find(); + logic.fetchUserInfo("${Api.getUserInfoTA + userId}/home"); + } +} + +Size boundingTextSize(BuildContext context, String text, TextStyle style, + {int maxLines = 2 ^ 31, double maxWidth = double.infinity}) { + if (text == null || text.isEmpty) { + return Size.zero; + } + final TextPainter textPainter = TextPainter( + textDirection: TextDirection.ltr, + locale: Localizations.localeOf(context), + text: TextSpan(text: text, style: style), + maxLines: maxLines) + ..layout(maxWidth: maxWidth); + return textPainter.size; +}