CG(4NFJvu8)sX#^2Ihw&J3)*KU
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
literal 0
HcmV?d00001
diff --git a/circle_app/assets/images/circle/push.png b/circle_app/assets/images/circle/push.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffe2b824d7270b98f45e21f10fe71c62d4a60bf9
GIT binary patch
literal 7219
zcmV-39L(d1P)Py5?MXyIRCr$PT?d#I)!BZ(Gjs1&$_j!a8VL{!iqzPGg2rG2^+z!FpoS9cB~gir
z9gPuVP<7>p+|hs01!qIR`$dXuX*_~iVOE0$pH}EE
zqV|Dp}YDJo+OHmfI)wmREg{1wc%ofu#0P82}~t`xYPt;7b5miGfKh
zk%vRSUeJ7^Ll35aPJlGj*Os>Yk@2zSKzu+4pbz$rzsHjM4WbORPK-M_r(jH>MuTnV
zZPw)Sh58TnQLvFoPf6_U#J2Ru4S}V?Z6rF0J23%1(vVLC`YmJ3f>>VOM@@^6e|uaKGV%LUAuMBBz4t-G1NA{)VU`A?*QWZ3{Y`D3gCJ>qts~gex@3kg=%XA
z`5LM)!P66*SMn{Ga%VLl=R_(uzP`RghfR$+thzRG=6xBXN;c{-MwvfI8*6t{X}F_c
zq83z@>lVYj+0nv#-9Gcgw*Qagp#12a8<}^StJwewka6mS0OS310mNoF
zPLCHH>ABQkzL2^t*w_!K@F$)FTw|;ABdB@h0ky_)%RU_F3>`VK7j-gZX;0SANqadT+L~$r^}1
z{nixHZ#i#h&{iGPt-;B4XAK|sD)_E{d{P#b;Xo+cn?4{n~rmJTMY$b7p`{)zF2{q
zs-jj8iMfzM3#il+Kks7Ql<6!p2I3wo;uE#VbpoT1Z=-F@%)PI(T;4Z=GG8Idw9j0<
z)<*%eD2~FhYt7`1wj7B{m%Pyx3s*1gni&`~0^*)a%?Q;NvotxO0BuFhdu}&5w}Y=u
zwLZG$W>g;vtcu0#;oqsLn~fUGV_M}~(B-icKkHuiF?%Bl^g|XrNE*x6pUY~pNJXLQz-@G
zx{Gvyeb@)x(i^>N1meIC<2R`y`wCsK6
zJ7t-3&I)Z$G%**-w%}A$9r;fG{1;LwwG|KtFE+(a%voRHs)qr@^Tc&N5rC$ZmmqFCKDR(T9qG*N!h!(`fTnkVov=?PgqrDF7Q)mR>Z4Rzkd&s
zAA*5Y1LEOtn`0wInB$bXPzK-sw!3x0i3x7lQcN|;SUP`#spBRHZw0Uzz*+!r17M_a
zxE|X$48UgqzHQ>U^Q^iXz(T+a6y~_tXRA{PmzJU6f+g;AaTi_eB1U_=C%<@r{a9Kc
z4t>*EB}#Q>9?1^S_dhaFUDJYOLvpd+0DcDGO8{R1_}-5`=6v~lM*!g<&W8a|iwnZl
z2tvxk7XtV%fa?If(L~{Fxm=a=7zX$L{D^&_B#(v`lE?8$_*$LOkZ4
zJok_US4b#P@HJCr1<&_^x3b`dB!q5KM~4mHY;Nt@bnS#skehpe9;{Xm}wBD3L=<)
zZEv}-TZzX(T1w%~1b+hX>(GD+if|G?<0W4P(Alr^7J!p#I0^|g?o=ug%r0ah(AWp9
z2-PnKNId5lZU=B|NF1n*emsJi#mK_`_q*euF!T1
zL~gbV-q7P#m79zG^n&STqnaQiUo!3Nn0^H!{S{34ejUw(%LZD^=x-?|1cI!Ge=N82
zK|rwlD}|eJk*J{tk>uoDG?&!2Xav_N|2@i%H;0rK(kI}S0Y~Hp{-2Pho{CA1HT+KS
zyqcGxo)Mmd3$zKHF*S<^^0E>Na
zBh-|+$mf*bsDXD1b;=FG+btTp@kxiUxvH*tZL8!fRlaC4u?+g^FUwz14
ze)03>j!jiE!ioZJmA*{IJmK7{BGy>8wp%g&aK+)C!M7!4A0RQ2p-a|bCXHgQ>&}yNA8|hsOZ8GVa7-@@
zK4MSLsG3f*YsjK)t9Jt}_0!M*-tm>2z*yZ>V`JY0Dvw%vaDwu&Zx*7VJ$&R6h~$Vg
znzQg88QMANEvoHkZVZjPsc2AByZY@F==j(|EO6t1cJ&u>!Ncx)5h<}Ef@_Y$UTvbD
zaNJsC5*p=c%DFT|5e79-bInHlAgBnOOf_59Cnsh<`=zV~O+qzk>l{;wU!MS@Nv1Ys
zh3mxNj`1N`v$;W4pZ-i~DeP;W#}c>7)5|uw?p|`fIG`n=gMH-^OE!8-(Su
znXcznibNG|Jf&3ukzo4;07e4WCCg<(T!v^pRfpI@pY$#OXxQ$TNuz1%a6Pg)kyi9Uvs!SMt>7n^jqKW
zKOhhp>luWn1@+kmwdNp#h{_7hH}vSFMv&7(G})J1TOtrW8S%DRSmMOJqj`f|Jx%|g
zvgD`A0**Tb2lVdgxrs6r${T~zG({U+cq%C8r)iui0$gAklxv&k9|8QSaKMbq+3^a^eIPMLBw)X0HitEq?Wm-ucQS1(X+9_502p97@b2+lQLau;X*Ur
zARIKo@Gi=lwaISmm)wt>lW~D`5)h31JGo^Jh+8P_%zgm_mVAlF`N0Y8y6?&jce>N<
zh#JGYxp(S_Ka3vL;yf#tsF_%W7_!C)VVbnZ%?l_@;
zv#E`}O~n~0XAv|!wgRI(xzo|U-SDrzCLL&|wDVo>+u(xaD*CM%#vjz7!b4>vQ<_jL
zpvNTOo;e_Hz1kJiW?)ij8P2k8ARg1_%PqH?0R?$@x2n>>j$rYH=LvUjIDEdTK+_cM
z5-f9kMI&gRAf!CVLYa!b+;D&dv--~R=S(k%cj=U0nB2r8HXGx2>b!D5+|@Pzyp+0FgnyyeNPio=O<404>F{qGvyWUwr+AVZ?i(G3NbzQHRSvM;dEQA3aT!
z8e_CE?Mlp))5fd1G{nXNP-C=11%uHvx21Sc{@^F8r~B9t%`m?Lz)-Gqg+yX|lrtL|
z0Mbw(5@?Jr3JUF?l!2KA$U+&I`8kdHZM?=SwJ4^71dn>S$spBt_J-pf(vcmnm*
zYu&L*$y9!vAR0BV4?9K9>(sSHWbp+loRs^*-V6eXnrm3WU|oWe^(gm|Th>;X`$1bG
zuLB{s$=3B2wB1l3GOva=tuh#bA_O-^*ckr4Z|@9)wFz<5u%_3nME<`XHGgrca40`G
zEF!-ff0a!4fOzkus=Wn~1%PQQ5O@Dy%8=d%Z{=EQ*a#Z`ZMxKG7^ap>|87tifcl$I
zehKA69^LyhbJkBVO4WcFYQ=yCCLg61-bM4Q|8I#eZ)W4WZYU7x31ZGOqlnTK+Bj*W
zY)C3<oYSUA
zv4w%Iv2t-H$A{C
zI_G-J3l2#F@qx>olcQ1V(ZpSfCU(XRLhnK*gx(eeAP5LJCNBlb1dmdhY8b;upi*w4
z#++^r1St*Fv=Q=ZlHd|jwo6&-3O`w$fJ~>XaN%i#Wczi=kfbPm%gi+7?*t|{d8$dM
zHWwcm0#jy#@HLK~N*IsohM1O`bM3e$?%)4t{tJj5<&5GObjpp1kC9h%Sv`2U{?t;k
zrzJq~j=1KS3&2kjY_A`7byTiuF(Ve<&w_gz;h!}!T?UsN`y=sFt
zL2|9&W(R7QOm^bWOum-I9ZYaAy_4LCp<6VYuq^X6^}4uWHVao55VL7(d#h`fzJ{F^
zK98qhOvi#eL8XIXzrI-*wCt5?KzwApDX|L7LJ`@Wr(5w3=FX$9RMbGT3Dj&(B9PP2
zoWVs*H%2BX@hUnV;RGO$;QGvkprmrd&@f)^!~`cQ5%p=SCi<`s-tWk8vB1Di6Gv-E
zCpFJa#`w~8<|2}evY```!Kd9NNt4r7gq(GeJI)wP6;VnA>-QOs<9~MOcCA6zW>z6k
zc}!DIYz*#2z_UHdWsT8ZDkwSLzzoB+p_!(k2KDA-3~BpXHV->}@*JKp8l8;M5UBG<
z+#w7gPL{2JIBAkmeb$@LjX^g{2_(Q>-*huheg
zPvWi|IBJ?O0=;G+^2zLT<3l52&vmsy#1iCp#0`V5^6YgjMMG69a(;hkA1&(w&@!a^Rhs8h$z71WA33h;$jr%
zzD`Zz2+Yava*<`+4vFKd^{buNen~cF8CEa#El+*_yg6yG?m(Boj~LZub*i~
zi(BR0eOb^wS2aw5SShUcF2z*05<_S#%(o#ijS;{2o6wV0
zYsmc9tuv6FR{jDg6O7MyA(7AV|M=>U`&9c4b>aiCn$?L6-)yPRpKPI9-(3bEyP
zVZhq=aFgw#XIumMHc(|SasP)i10kuB6%hHtyC<6wmcgvVjX8iQloocu9eds8efA;u
zDcx3ywHhb2dC4W1Q1PwzvBzR+#|)S;1|#}EUiWbvZZ&Hl^5uo2%s6P=qy!~iP#$wr
zi!pnr<1l5%;ohgm>IL#2*BZ9y*_!X3!p`fS!ekZ4fxKCcen?~Ry=Yw8_bI6<1*67E
z*9(YjZP7^6N4c1hXQ5w}3tj{dN3bTpBOWO^7EkYZjCW@XBcbcvM~hyn);ai!vZdHz
z)oA#x^?|FX{k7~2!xL%jH1D@`F
zzn3?{!T^B=^_BI^axXL{1sHN?zBnIeRDFvv+A+I;S2QqMPzf9tHy111+HH1vV|6A2
zX%ujLdW<;;g6RbOC~-^MQofMe(x
ze`f@^Q~oBpZkUUGU_gv@_-WXBg#Z6yEoiMK%3<5_FTY#C)+ctY0LP$3tSU{3ZCbz6b1{8!hPLd
z6z?P7O;MT@h{1qY4l(;d;Q$RBC`@(|^lqyVrSX$94T#{K6$$Ri`{fhjFo_cU-6u5T
zFAR(r#`=cpBvHyX{B_p?QQqauK1ThGz;-F<_zUFymT(9p+?dHy6CzR=ed6tEyNAPL
zAKo0ipWf0ZrsEAG`F9^fJ^&JGfIl?5;8u>LqJb}W()9>8=)Gv
z2}F%B$b1l08+*W^!mO|wTMzNO5V$-TCE828Dcm4iHdi$OhiDR@*Hb0Dm;8;K{^;P<
z$Ui89Px*)=5M`RA@u(n|G*PMG(e+pS@rWf-OA`pt^rX{>?nfWfQgB*Aez|zkf;bo
zO(J4q?^wZt9sNVa9u*^E!2))TiXFRgvn@f|mk^0;>Wm)ztQ9;CJ8#k0nZz=u}ado_J%k60I2
z4Hye-(qs&~{w2UnNx#$uT^n%Pqt^ms8caSPxDt36@Lv4WZd$fbL@Wy|o!sAn?LgoJ
zV4I3@9ppX(4wv*|9nc*EP6{3aT$e@LVs2aEDc~eY4nnmhA{^l60^?FV$j1ucXyEQn
zUAzw9IR;dLMBE1)T$X&109
zczbD*8-e3{Wz|Nj7ZJ|Xt^iIfeKSFlb!sXt0Y}8n!1JXH$c~6dl3e^M;J9pZ
zZ>N1FJ>E>Arhp@2W#H}7(eneWFJubYx*JLQwo1un7M@wk
zjqd`+FRFdpB8WLkJ3A|6mZWKI1CEF_fqaF0ecMjb`+Z~DOp%E28U1w08&{O%8`mJI
zv~Wbs0M5$3d_>az{Rp)w1x+xD|{Gb_KA-Lian$`v?SNlDqVVXN+*l=GbFhhx!6cW
z4lzcOkJ(DV<+H45BHoXy5E0XX^D^BA0a!o3^4y)QfQVUj*M>yNsSkl1RTy|;SfnUuo)IO7)p4G1Oj}%zXlejHkV-HI6
zeq}OG($|fGmh)#<1$Rv!m?9Y`>HCpXyzX4-T5CpP(=^6BpUIMZy{(MW=5n1{j?X4t
zoKwpoc|_Ia!Q`0Px
zfHbOjII888#^P82_$H;5gSrSB0d{3SC#fEmbU;7*bVZ4$GKXjc*hFH4VxnDc29C(a=&VfZAEv$yvx0dm!!C81
z_qu>u{VpP$Gd!1lXK!>m*;yezfiB-Xya0QS6g}DoSYLKb*%krT-e>as!bY6|t;jT6
z_stTS<_UIP)UKV#H0zdg#ioYFHcN%up-X)(KU(VNFb_LrQPD1G-#VelIbv5gY>1}K
zE-e8k*Pf74&fLq)5uY;BmQI#+Lru;NTd$)e-O*|rvRVO3L$Yu0WxbZ=x&Is%eaT{?E#g*o9|y5H22j~)??
z+LrDFrgxiROw6F&H>X1jm3rH@l=ibbdJY3_tLTjNz4IBTrNede)Uo5m-J_yO)yI!-
zMz^-pxsw~LBbP2&+RZMmF05bCk>^j{dg$!z!PIu>gkWJ=!Bk6jD(hY>Gnb}3rvQxz
zJRd!iS~agUiVL*?Cu_Uu<&5++YZZPEaDe*}_#(9idk8muK(AxFfs^
zg+&qpcsalRm@!PaXqYZY$;Myze>SI!g8OH~$0f8ms*#82;rdL}Kb!*E20000<
KMNUMnLSTZI)OyPy9V@X6oRCr#^U3-w_MRorA-gzQ|fPyIj0TU__gDIny227Ae!3XgfVyZNMSX%Dh
z)!>@a#FWbNNJ@zT!CgQNt0lw)qecThKoXK*iHeUH!73jWOHCOHA?qSIJ2Us*PW5?o
zf8D>|?9TFXrwVrF&hL5p^mo4Vozp!5_v35JMR9RDz(L~~JShzE+zIf+5b@L)aA*ja
z1rRVmL_|OU`1|x@OutLVq%Zxy{>$H|9|I7}XX$EsWYF`&Ku?`Uz`yt3$vvBU#2}Z`
zXQF%2=X#EwI|lFr0C!-3FAV~&9}aQ*t|4}P=-FZSzM9Q%x32R>+v9<8idPN>I5PsL
z%rD}A$pnZIm`?Q)=?VQM(#xmc*^BW@=*!x%@}dzT8@9*z_PhQ8;(@Y3pzG^!`{#U5
zH+uTa2ZoLdLmj}u5E#q?%S+fj0B)E9*M^AeFFQT_cwL60aoy|jqwVo^h>T_sIhq28fZKF3$#kew%6L
z@#6XE{_;F}f4!>CqHzH3o(8=0@(tlVdo|vA41M+`@#ygo@1LE=>8mTiG~Ih3HVg87
z@lBoT?p-#m+&o_A?t*eq}~Ua3U}1-sMJN&rhf`5Ch14tAVilre{clksgs?r-i68
zGYI0U=eGfs8R_prvo$^G+yTJK5^f0ruibuXxP4Cs-y?Kv+!kLw04^TR;GoIGP{0gZ
zP32@EH*y+1^B%FBP00}C{DRAFVE0gc2{nLvQ2Abms>c0(?9S)Oz@@<&B4S!_Sq7=#
zu-r?Y*Uz+PH!rSds5^r{+W>JeM3_#na~g2=6{m!&)-v{*hTgO-zGDz@u6d0-h~M1Y
zK_Ak+vYEmaq%@w;20ac=Jp-sl(1Fxx>_6MI&-XIpR-Rnrx5ouBU^cozQzs~DFxCO%
z0BX)7b|{X7IK|e>o*mBZGj^|`H@-KXv#@}zE6bIK`9tnGVv{#IzVW~auDe0hL$cu-
zPiBvi@@r=IA{B5;k?$^
z9Yb&47GH&c52w+l5YS-^0$l_b6`d*(T~rbP6sKPD_w8d^JW=*aZdT4o&OgeH$1Rl9IhBAj=1J
z%+N<==dwUA7&H}w$2dg@Q|y`<6x?GjdI%
z+>@huj~P!REzu|svIGZu;VOfSG6R?wq=E5ky5ZCFIRjCS&CI93N#WmBGSwS5(sOBo
z7DHk*69dTf9?3g_I6sfDavwHrdr`O|!}{oN;!#+@R{m?SI)
zGoFMq?su=lF@hn6*@b^^RLyb&fx*n#-Sy4Lj>qX0B?wLw;XNoOek0nA2FcIPM7%7F
zw#UbYfFC9rXfKjgv2?n*w_Ll4!ivx7f;|LY-qEKyd78u)dpUa<`6-kCa!rN~A95bt
z{A?NS97<}4@N>n~G-DJt%&D>}$U)a>5&jF__@Euz6eDF#8DH
zxRQiFH$Y8uvb0#qmVMsWVqBA&SJ_n^m?W?XEO_{Ay{@au72~_tmke%?+&yDs%bWRU
zr?n0Z1QX&F`kw|v`(D^b!EE{6+ybz)gww+4^7yXdEZ#Cn>TAmyY($-7k^<2yD|&>c
z
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
DOML3q
literal 0
HcmV?d00001
diff --git a/circle_app/lib/app/call_out/logic.dart b/circle_app/lib/app/call_out/logic.dart
index 5db85af..bad07ed 100644
--- a/circle_app/lib/app/call_out/logic.dart
+++ b/circle_app/lib/app/call_out/logic.dart
@@ -1,7 +1,10 @@
+import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'state.dart';
class Call_outLogic extends GetxController {
final Call_outState state = Call_outState();
+ TextEditingController textEditingController = TextEditingController();
+ bool isCheck = false;
}
diff --git a/circle_app/lib/app/call_out/view.dart b/circle_app/lib/app/call_out/view.dart
index bca5ff2..7fb34df 100644
--- a/circle_app/lib/app/call_out/view.dart
+++ b/circle_app/lib/app/call_out/view.dart
@@ -1,4 +1,7 @@
+import 'package:circle_app/components/my_app_bar.dart';
+import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'logic.dart';
@@ -11,6 +14,163 @@ class Call_outPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return Container();
+ return GestureDetector(
+ onTap: () {
+ FocusManager.instance.primaryFocus?.unfocus();
+ },
+ child: Container(
+ width: MediaQuery.of(context).size.width,
+ height: MediaQuery.of(context).size.height,
+ decoration: BoxDecoration(
+ image: DecorationImage(
+ fit: BoxFit.fill,
+ image: AssetImage(getBaseImage('home_back')))),
+ child: Scaffold(
+ backgroundColor: Colors.transparent,
+ appBar: MyAppBar(
+ centerTitle: '世界喊话',
+ actionWdiget: Image.asset(
+ getCircleImage('push'),
+ width: 54.sp,
+ ),
+ onPressed: () {
+ showToast('111');
+ },
+ ),
+ body: SafeArea(
+ child: GetBuilder(builder: (Call_outLogic controller) {
+ return Container(
+ child: Column(
+ children: [
+ Container(
+ height: 45.sp,
+ padding: EdgeInsets.only(left: 17.sp, right: 17.sp),
+ child: Row(
+ children: [
+ Text(
+ '选择圈子:',
+ style:
+ TextStyle(color: Colors.white, fontSize: 16.sp),
+ ),
+ Expanded(child: Container()),
+ Container(
+ padding: EdgeInsets.only(left: 7.sp, right: 7.sp),
+ height: 21.sp,
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
+ borderRadius:
+ BorderRadius.circular(21 * 0.5.sp),
+ gradient: const LinearGradient(
+ begin: Alignment.centerLeft,
+ end: Alignment.centerRight,
+ colors: [
+ Color(0xff0AFCFF),
+ Color(0xffD739EA)
+ ])),
+ child: Text(
+ '立即解锁',
+ style: TextStyle(
+ color: Colors.white, fontSize: 12.sp),
+ ),
+ ),
+ Image.asset(
+ getHomeImage('icon_in'),
+ width: 24.sp,
+ ),
+ ],
+ ),
+ ),
+ Image.asset(
+ getCircleImage('line'),
+ width: Get.width,
+ fit: BoxFit.fill,
+ ),
+ Expanded(child: Container(
+ padding: EdgeInsets.only(top: 15.sp),
+ child: Stack(
+ children: [
+ TextField(
+ controller: controller.textEditingController,
+ onChanged: (value) {
+ controller.update();
+ },
+ style: TextStyle(color: Colors.white,fontSize: 14.0.sp),
+ maxLines: 32,
+ maxLength: 200,
+ decoration: InputDecoration(
+ hintStyle: TextStyle(color: Color.fromRGBO(255, 255, 255, 0.6),fontSize: 14.sp),
+ hintText: '请输入...(左下角上传图片或视频哦)',
+ border: InputBorder.none,
+ contentPadding: EdgeInsets.only(left: 17.sp,right: 17.sp),
+ counter: Text('')
+
+ ),
+ ),
+ Positioned(
+ right: 15.sp,
+ bottom: 10.sp,
+ child: Text('${controller.textEditingController.text.length}/200',style: TextStyle(color: Colors.white,fontSize: 12.sp),))
+ ],
+ ),
+ )),
+ Container(
+ padding: EdgeInsets.only(left: 17.sp,right: 17.sp),
+ child: Row(
+ children: [
+ GestureDetector(
+ child: Image.asset(
+ getCircleImage('photo'),
+ width: 30.sp,
+ ),
+ ),
+ const SizedBox(
+ width: 16,
+ ),
+ GestureDetector(
+ child: Image.asset(
+ getCircleImage('video'),
+ width: 30.sp,
+ ),
+ ),
+ Expanded(
+ child: GestureDetector(
+ onTap: () {
+ controller.isCheck = !controller.isCheck;
+ controller.update();
+ },
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Image.asset(getCircleImage(controller.isCheck ? 'check' : 'uncheck'),width: 17.5.sp,),
+ SizedBox(
+ width: 4.sp,
+ ),
+ Text(
+ '使用至尊喊话',
+ style: TextStyle(
+ color: Colors.white, fontSize: 16.sp),
+ )
+ ],
+ ),
+ ),
+ ),
+ GestureDetector(
+ child: Text(
+ '内容规范',
+ style: TextStyle(
+ color: Color(0xff00FFF4), fontSize: 14.sp),
+ ),
+ )
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }),
+ ),
+ )),
+ );
+ ;
}
}
diff --git a/circle_app/lib/app/circle/view.dart b/circle_app/lib/app/circle/view.dart
index b9d42bf..92a1cf6 100644
--- a/circle_app/lib/app/circle/view.dart
+++ b/circle_app/lib/app/circle/view.dart
@@ -1,5 +1,4 @@
-
-
+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';
@@ -175,7 +174,6 @@ class CirclePage extends StatelessWidget {
margin: EdgeInsets.only(left: index > 0 ? 4.sp : 0, right: 4.sp),
child: Stack(
children: [
-
ClipRRect(
borderRadius: BorderRadius.circular(10.sp),
child: SizedBox(
@@ -191,7 +189,7 @@ class CirclePage extends StatelessWidget {
margin: EdgeInsets.only(top: 72.sp),
child: ListView.builder(
itemCount: 3,
- itemBuilder: (context,index) {
+ itemBuilder: (context, index) {
if (index == 0) {
return Container(
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
@@ -199,8 +197,8 @@ class CirclePage extends StatelessWidget {
decoration: BoxDecoration(
image: DecorationImage(
fit: BoxFit.fill,
- image:
- AssetImage(getCircleImage('circle_desc')))),
+ image: AssetImage(
+ getCircleImage('circle_desc')))),
child: Column(
children: [
Container(
@@ -208,8 +206,10 @@ class CirclePage extends StatelessWidget {
child: RichText(
overflow: TextOverflow.fade,
maxLines: 2,
- text: TextSpan(
- children: [descSpan, span])),
+ text: TextSpan(children: [
+ descSpan,
+ span
+ ])),
),
Container(
child: Row(
@@ -218,7 +218,8 @@ class CirclePage extends StatelessWidget {
children: [
Container(
height: 30.sp,
- width: 30.0 + 15 * (widgets.length - 1),
+ width: 30.0 +
+ 15 * (widgets.length - 1),
child: Stack(
children: widgets,
),
@@ -229,7 +230,8 @@ class CirclePage extends StatelessWidget {
Text(
'3.5万圈友',
style: TextStyle(
- color: Colors.white, fontSize: 12.sp),
+ color: Colors.white,
+ fontSize: 12.sp),
),
SizedBox(
width: 8.sp,
@@ -254,74 +256,81 @@ class CirclePage extends StatelessWidget {
}),
),
ClipRRect(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(10.sp),
- topRight: Radius.circular(10.sp)),
- child: Container(
- padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
- height: 72.sp,
- decoration: BoxDecoration(
- image: DecorationImage(
- fit: BoxFit.fill,
- image: AssetImage(
- getCircleImage('top_circle_bg')))),
- child: Row(
- // mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Image.network(
- 'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
- width: 42.sp,
- height: 42.sp,
- fit: BoxFit.fill,
- ),
- Expanded(
- child: Container(
- padding:
- EdgeInsets.only(left: 8.sp, top: 12.sp),
- alignment: Alignment.centerLeft,
- height: 72.sp,
- child: Column(
- children: [
- Text(
- '圈子名称',
- style: TextStyle(
- color: Colors.white,
- fontSize: 18.sp,
- fontWeight: FontWeight.w600),
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(10.sp),
+ topRight: Radius.circular(10.sp)),
+ child: Container(
+ padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
+ height: 72.sp,
+ decoration: BoxDecoration(
+ image: DecorationImage(
+ fit: BoxFit.fill,
+ image:
+ AssetImage(getCircleImage('top_circle_bg')))),
+ child: Row(
+ // mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Image.network(
+ 'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
+ width: 42.sp,
+ height: 42.sp,
+ fit: BoxFit.fill,
+ ),
+ Expanded(
+ child: Container(
+ padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
+ alignment: Alignment.centerLeft,
+ height: 72.sp,
+ child: Column(
+ children: [
+ Text(
+ '圈子名称',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 18.sp,
+ fontWeight: FontWeight.w600),
+ ),
+ SizedBox(
+ height: 4.sp,
+ ),
+ Text(
+ '35.6万人看过',
+ style: TextStyle(
+ color: Color(0xff03FEFB),
+ fontSize: 12.sp,
+ ),
+ ),
+ ],
),
- SizedBox(
- height: 4.sp,
+ )),
+ GestureDetector(
+ onTap: () {
+ Get.bottomSheet(tipWdiget(),
+ isScrollControlled: true, enableDrag: false);
+ },
+ child: Image.asset(
+ getCircleImage('add'),
+ width: 77.sp,
),
- Text(
- '35.6万人看过',
- style: TextStyle(
- color: Color(0xff03FEFB),
- fontSize: 12.sp,
- ),
- ),
- ],
- ),
- )),
- GestureDetector(
- onTap: () {
- Get.bottomSheet(tipWdiget(),isScrollControlled:true,enableDrag:false);
- },
- child: Image.asset(
- getCircleImage('add'),
- width: 77.sp,
- ),
- )
- ],
- ),
- )),
+ )
+ ],
+ ),
+ )),
Positioned(
- bottom: 56.sp,
+ bottom: 56.sp,
right: 0.sp,
- child: GestureDetector(child: Image.asset(getCircleImage('send_msg'),width: 60.sp,)))
-
+ child: GestureDetector(
+ onTap: () {
+ Get.toNamed(AppRoutes.Call_out);
+ },
+ child: Image.asset(
+ getCircleImage('send_msg'),
+ width: 60.sp,
+ )))
],
)));
}
+
///至尊喊话
vipDynamicItem() {
Text descText = Text(
@@ -439,7 +448,7 @@ class CirclePage extends StatelessWidget {
EdgeInsets.only(left: 6.sp, right: 6.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(9.sp),
- gradient:const LinearGradient(
+ gradient: const LinearGradient(
begin: Alignment(0.25, 0.5),
end: Alignment(0.75, 0.5),
colors: [
@@ -470,7 +479,7 @@ class CirclePage extends StatelessWidget {
height: 100.sp,
margin: EdgeInsets.only(top: 5.sp),
child: GridView(
- physics: const NeverScrollableScrollPhysics(),
+ physics: const NeverScrollableScrollPhysics(),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, //横轴三个子widget
crossAxisSpacing: 8.sp,
@@ -500,7 +509,7 @@ class CirclePage extends StatelessWidget {
),
Container(
height: 34.sp,
- padding: EdgeInsets.only(left: 5.sp,right: 10.sp),
+ padding: EdgeInsets.only(left: 5.sp, right: 10.sp),
margin: EdgeInsets.only(top: 5.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.sp),
@@ -515,7 +524,9 @@ class CirclePage extends StatelessWidget {
height: 24.sp,
child: Stack(children: widgets),
),
- SizedBox(width: 4.sp,),
+ SizedBox(
+ width: 4.sp,
+ ),
Expanded(
child: Text(
'1位圈友已私聊',
@@ -535,6 +546,7 @@ class CirclePage extends StatelessWidget {
),
);
}
+
///普通图文喊话
normalDynamicItem() {
Text descText = Text(
@@ -583,7 +595,7 @@ class CirclePage extends StatelessWidget {
Container(
height: 279.sp,
width: Get.width,
- padding: EdgeInsets.only( left: 12.sp, right: 12.sp),
+ padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
child: Column(
children: [
Container(
@@ -593,79 +605,79 @@ class CirclePage extends StatelessWidget {
children: [
GestureDetector(
child: Stack(
- alignment: Alignment.center,
- children: [
- Image.asset(
- getCircleImage('avatar_bg'),
- width: 42.sp,
- ),
- ClipOval(
- child: Image.network(
- 'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
- width: 40.sp,
- height: 40.sp,
- fit: BoxFit.fill,
- ),
- )
- ],
- )),
+ alignment: Alignment.center,
+ children: [
+ Image.asset(
+ getCircleImage('avatar_bg'),
+ width: 42.sp,
+ ),
+ ClipOval(
+ child: Image.network(
+ 'https://p3-passport.byteimg.com/img/user-avatar/eb429d4dbb3c246f580a6f7894f2b246~100x100.awebp',
+ width: 40.sp,
+ height: 40.sp,
+ fit: BoxFit.fill,
+ ),
+ )
+ ],
+ )),
Expanded(
child: Container(
- padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
- alignment: Alignment.centerLeft,
- height: 72.sp,
- child: Column(
+ padding: EdgeInsets.only(left: 8.sp, top: 12.sp),
+ alignment: Alignment.centerLeft,
+ height: 72.sp,
+ child: Column(
+ children: [
+ Row(
children: [
- Row(
- children: [
- Text(
- '圈子名称',
- style: TextStyle(
- color: Colors.white,
- fontSize: 18.sp,
- fontWeight: FontWeight.w600),
- ),
- SizedBox(
- width: 8.sp,
- ),
- Image.asset(
- getCircleImage('vip'),
- width: 36.sp,
- )
- ],
+ Text(
+ '圈子名称',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 18.sp,
+ fontWeight: FontWeight.w600),
),
SizedBox(
- height: 4.sp,
- ),
- Row(
- children: [
- Container(
- alignment: Alignment.center,
- height: 18.sp,
- padding:
- EdgeInsets.only(left: 6.sp, right: 6.sp),
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(9.sp),
- gradient: LinearGradient(
- begin: Alignment(0.25, 0.5),
- end: Alignment(0.75, 0.5),
- colors: [
- Color(0xff8DFFF8),
- Color(0xffB5D3FF)
- ])),
- child: Text(
- '男.33.DOM.异性恋',
- style: TextStyle(
- color: Colors.black,
- fontSize: 12.sp,
- ),
- ),
- )
- ],
+ width: 8.sp,
),
+ Image.asset(
+ getCircleImage('vip'),
+ width: 36.sp,
+ )
],
),
- )),
+ SizedBox(
+ height: 4.sp,
+ ),
+ Row(
+ children: [
+ Container(
+ alignment: Alignment.center,
+ height: 18.sp,
+ padding:
+ EdgeInsets.only(left: 6.sp, right: 6.sp),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(9.sp),
+ gradient: LinearGradient(
+ begin: Alignment(0.25, 0.5),
+ end: Alignment(0.75, 0.5),
+ colors: [
+ Color(0xff8DFFF8),
+ Color(0xffB5D3FF)
+ ])),
+ child: Text(
+ '男.33.DOM.异性恋',
+ style: TextStyle(
+ color: Colors.black,
+ fontSize: 12.sp,
+ ),
+ ),
+ )
+ ],
+ ),
+ ],
+ ),
+ )),
],
),
),
@@ -682,7 +694,7 @@ class CirclePage extends StatelessWidget {
crossAxisCount: 3, //横轴三个子widget
crossAxisSpacing: 8.sp,
childAspectRatio: 1.0 //宽高比为1时,子widget
- ),
+ ),
children: [
ClipRRect(
borderRadius: BorderRadius.circular(6.sp),
@@ -707,7 +719,7 @@ class CirclePage extends StatelessWidget {
),
Container(
height: 34.sp,
- padding: EdgeInsets.only(left: 5.sp,right: 10.sp),
+ padding: EdgeInsets.only(left: 5.sp, right: 10.sp),
margin: EdgeInsets.only(top: 5.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.sp),
@@ -722,12 +734,14 @@ class CirclePage extends StatelessWidget {
height: 24.sp,
child: Stack(children: widgets),
),
- SizedBox(width: 4.sp,),
+ SizedBox(
+ width: 4.sp,
+ ),
Expanded(
child: Text(
- '1位圈友已私聊',
- style: TextStyle(color: Colors.white, fontSize: 12.sp),
- )),
+ '1位圈友已私聊',
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ )),
Image.asset(
getCircleImage('chat'),
width: 60.sp,
@@ -752,65 +766,93 @@ class CirclePage extends StatelessWidget {
width: 339.sp,
height: 330.sp,
decoration: BoxDecoration(
- image: DecorationImage(
- fit: BoxFit.fill,
- image: AssetImage(getCircleImage('add_tip_bg'))
- )
- ),
+ image: DecorationImage(
+ fit: BoxFit.fill,
+ image: AssetImage(getCircleImage('add_tip_bg')))),
child: Stack(
alignment: Alignment.center,
children: [
Positioned(
- top: 5.sp,
- right: 12.sp,
+ top: 5.sp,
+ right: 12.sp,
child: GestureDetector(
onTap: () {
Get.back();
},
- child: Image.asset(getCircleImage('close'),width: 24.sp,),
- )),
+ child: Image.asset(
+ getCircleImage('close'),
+ width: 24.sp,
+ ),
+ )),
Positioned(
- top: 24.sp,
- child: Text('解锁圈子才能主动私聊',style: TextStyle(color: Colors.white,fontSize: 16.sp),)),
- Positioned(
- left: 17.sp,
- top: 64.sp,
- child: Text('为什么要解锁圈子?',style: TextStyle(color: Colors.white,fontSize: 16.sp),)),
- Positioned(
- top: 98.sp,
- child:Container(
- width: 339.sp,
- padding: EdgeInsets.only(left: 17.sp,right: 17.sp),
- child: Text('为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的跨友;3、谢绝只会白嫖的猎奇人士。',style: TextStyle(color:Color.fromRGBO(247, 250, 250, 0.8),fontSize: 12.sp)),
- )),
+ top: 24.sp,
+ child: Text(
+ '解锁圈子才能主动私聊',
+ style: TextStyle(color: Colors.white, fontSize: 16.sp),
+ )),
Positioned(
- bottom: 18.sp,
+ left: 17.sp,
+ top: 64.sp,
+ child: Text(
+ '为什么要解锁圈子?',
+ style: TextStyle(color: Colors.white, fontSize: 16.sp),
+ )),
+ Positioned(
+ top: 98.sp,
child: Container(
- width: 168.sp,
- height: 42.sp,
- alignment: Alignment.center,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(21.sp),
- gradient: const LinearGradient(
- begin: Alignment.centerLeft,
- end:Alignment.centerRight,
- colors: [Color(0xff0AFCFF),Color(0xffD739EA)]
- )
- ),
- child: Text('立即解锁',style: TextStyle(color: Colors.white,fontSize: 16.sp),),
- )),
+ width: 339.sp,
+ padding: EdgeInsets.only(left: 17.sp, right: 17.sp),
+ child: Text(
+ '为打造纯净的社交环境,更好地服务大家,基于以下几方面考虑:1、平台升级为全天24小时人工审核,保证用户真实,避免骗子、酒托、虚假人士等扰乱平台 ;2、杜绝未入圈用户随意骚扰或影响已入圈的跨友;3、谢绝只会白嫖的猎奇人士。',
+ style: TextStyle(
+ color: Color.fromRGBO(247, 250, 250, 0.8),
+ fontSize: 12.sp)),
+ )),
Positioned(
- bottom: 72.sp,
+ bottom: 18.sp,
child: Container(
- child: Row(
- children: [
- Text('¥18',style: TextStyle(color: Color(0xffE845FF),fontSize: 16.sp,fontWeight: FontWeight.w600),),
- SizedBox(width: 2.sp,),
- Text('(原价60)',style: TextStyle(color: Colors.white70,fontSize: 16.sp,fontWeight: FontWeight.w400,decoration: TextDecoration.lineThrough,
- decorationColor: Colors.white70,),),
- ],
- ),
- ))
+ width: 168.sp,
+ height: 42.sp,
+ alignment: Alignment.center,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(21.sp),
+ gradient: const LinearGradient(
+ begin: Alignment.centerLeft,
+ end: Alignment.centerRight,
+ colors: [Color(0xff0AFCFF), Color(0xffD739EA)])),
+ child: Text(
+ '立即解锁',
+ style: TextStyle(color: Colors.white, fontSize: 16.sp),
+ ),
+ )),
+ Positioned(
+ bottom: 72.sp,
+ child: Container(
+ child: Row(
+ children: [
+ Text(
+ '¥18',
+ style: TextStyle(
+ color: Color(0xffE845FF),
+ fontSize: 16.sp,
+ fontWeight: FontWeight.w600),
+ ),
+ SizedBox(
+ width: 2.sp,
+ ),
+ Text(
+ '(原价60)',
+ style: TextStyle(
+ color: Colors.white70,
+ fontSize: 16.sp,
+ fontWeight: FontWeight.w400,
+ decoration: TextDecoration.lineThrough,
+ decorationColor: Colors.white70,
+ ),
+ ),
+ ],
+ ),
+ ))
],
),
),
@@ -818,4 +860,3 @@ class CirclePage extends StatelessWidget {
);
}
}
-
diff --git a/circle_app/lib/app/home/logic.dart b/circle_app/lib/app/home/logic.dart
index caa3288..13da728 100644
--- a/circle_app/lib/app/home/logic.dart
+++ b/circle_app/lib/app/home/logic.dart
@@ -9,7 +9,7 @@ class HomeLogic extends GetxController {
int currentIndex = 1;
- Widget currentPage = Container(color: Colors.red,);
+ Widget currentPage = Container();
final HomeState state = HomeState();
String getInfo () {
diff --git a/circle_app/lib/app/home/view.dart b/circle_app/lib/app/home/view.dart
index 56f4687..4b240a2 100644
--- a/circle_app/lib/app/home/view.dart
+++ b/circle_app/lib/app/home/view.dart
@@ -1,4 +1,3 @@
-
import 'package:circle_app/app/minefragment/view.dart';
import 'package:circle_app/app/circle/view.dart';
import 'package:circle_app/app/msg/view.dart';
@@ -20,7 +19,7 @@ class HomePage extends StatelessWidget {
final List _tabs = [
MsgPage(),
CirclePage(),
-MinefragmentPage(),
+ MinefragmentPage(),
];
@override
@@ -28,38 +27,38 @@ MinefragmentPage(),
return GetBuilder(builder: (HomeLogic controller) {
return GestureDetector(
onTap: () {
- // Get.toNamed(AppRoutes.Complete_materialPage);
+ // Get.toNamed(AppRoutes.Complete_materialPage);
},
child: Scaffold(
- // backgroundColor: Color.fromRGBO(244, 245, 245, 1.0),
+ // backgroundColor: Color.fromRGBO(244, 245, 245, 1.0),
bottomNavigationBar: Container(
height: 49.sp + MediaQuery.of(context).padding.bottom,
width: Get.width,
// color: Colors.red,
- padding: EdgeInsets.only(left: 50.sp,right: 50.sp,top: 8.sp),
+ padding: EdgeInsets.only(left: 50.sp, right: 50.sp, top: 8.sp),
decoration: BoxDecoration(
- image:DecorationImage(
- fit: BoxFit.fill,
- image: AssetImage(getTabbarImage('tabbar_bg'),)
- )
- ),
+ image: DecorationImage(
+ fit: BoxFit.fill,
+ image: AssetImage(
+ getTabbarImage('tabbar_bg'),
+ ))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
funcItem(0, 'msg', 0 == controller.currentIndex, controller),
- funcItem(1, 'circle', 1 == controller.currentIndex, controller),
+ funcItem(
+ 1, 'circle', 1 == controller.currentIndex, controller),
funcItem(2, 'mine', 2 == controller.currentIndex, controller),
],
),
),
- body:_tabs[controller.currentIndex]
- ),
+ body: _tabs[controller.currentIndex]),
);
});
}
- funcItem(int index,String image,bool isSelected,HomeLogic controller) {
+ funcItem(int index, String image, bool isSelected, HomeLogic controller) {
return GestureDetector(
onTap: () {
if (!isSelected) {
@@ -67,10 +66,14 @@ MinefragmentPage(),
}
},
child: Container(
- child: Image.asset(isSelected ? getTabbarImage(image + '_selected') : getTabbarImage(image + '_normal'),width: 34.sp,height: 34.sp,),
+ child: Image.asset(
+ isSelected
+ ? getTabbarImage(image + '_selected')
+ : getTabbarImage(image + '_normal'),
+ width: 34.sp,
+ height: 34.sp,
+ ),
),
);
}
-
}
-
diff --git a/circle_app/lib/app/login/complete_material/view.dart b/circle_app/lib/app/login/complete_material/view.dart
index eee6559..646dbfa 100644
--- a/circle_app/lib/app/login/complete_material/view.dart
+++ b/circle_app/lib/app/login/complete_material/view.dart
@@ -14,14 +14,14 @@ class Complete_materialPage extends StatelessWidget {
return GetBuilder(builder: (Complete_materialLogic controller) {
return Stack(
children: [
- Container(
- width: MediaQuery.of(context).size.width,
- height: MediaQuery.of(context).size.height,
- child: Image.asset(
- getBaseImage('bg'),
- fit: BoxFit.fill,
+ Container(
+ width: MediaQuery.of(context).size.width,
+ height: MediaQuery.of(context).size.height,
+ child: Image.asset(
+ getBaseImage('bg'),
+ fit: BoxFit.fill,
+ ),
),
- ),
Scaffold(
appBar: MyAppBar(
centerTitle: '完善您的个人形象',
diff --git a/circle_app/lib/app/msg/view.dart b/circle_app/lib/app/msg/view.dart
index 3b1ea33..364fcfc 100644
--- a/circle_app/lib/app/msg/view.dart
+++ b/circle_app/lib/app/msg/view.dart
@@ -18,15 +18,11 @@ class MsgPage extends StatelessWidget {
image: DecorationImage(
fit: BoxFit.fill,
image: AssetImage(getBaseImage('home_back')))),
- // child: Image.asset(
- // getBaseImage('bg'),
- // fit: BoxFit.fill,
- // ),
child: Scaffold(
backgroundColor: Colors.transparent,
body: SafeArea(
- child:GetBuilder(builder: (MsgLogic controller) {
- return Container(
+ child: GetBuilder(builder: (MsgLogic controller) {
+ return Container(
child: Column(
children: [
navigatorItem(),
@@ -88,33 +84,46 @@ class MsgPage extends StatelessWidget {
),
);
}
+
tipWidget() {
return Container(
- margin: EdgeInsets.only(top: 18.sp,bottom: 15.sp),
- padding: EdgeInsets.only(left: 16.sp,right: 18.sp),
+ margin: EdgeInsets.only(top: 18.sp, bottom: 15.sp),
+ padding: EdgeInsets.only(left: 16.sp, right: 18.sp),
width: Get.width,
height: 20,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Text('想要聊天的圈友',style: TextStyle(color: Colors.white,fontSize: 16.sp,fontWeight: FontWeight.w500),),
+ Text(
+ '想要聊天的圈友',
+ style: TextStyle(
+ color: Colors.white,
+ fontSize: 16.sp,
+ fontWeight: FontWeight.w500),
+ ),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ShaderMask(
shaderCallback: (Rect bounds) {
return const LinearGradient(
- begin:Alignment.centerRight,
+ begin: Alignment.centerRight,
end: Alignment.centerLeft,
colors: [Color(0xff71F3F2), Color(0xffF657FF)],
).createShader(Offset.zero & bounds.size);
},
- child:Text(
+ child: Text(
'n人等您聊',
- style: TextStyle(fontSize: 16.sp,fontWeight: FontWeight.w600,color: Colors.white),
+ style: TextStyle(
+ fontSize: 16.sp,
+ fontWeight: FontWeight.w600,
+ color: Colors.white),
),
),
- Image.asset(getMsgImage('msg_arr'),width: 24.sp,)
+ Image.asset(
+ getMsgImage('msg_arr'),
+ width: 24.sp,
+ )
],
)
],
@@ -124,26 +133,33 @@ class MsgPage extends StatelessWidget {
reconmandWidget() {
return Container(
- padding: EdgeInsets.only(left: 16.sp,right: 18.sp),
+ padding: EdgeInsets.only(left: 16.sp, right: 18.sp),
width: Get.width,
child: Row(
children: [
Container(
child: Column(
children: [
- Image.asset(getMsgImage('msg_first'), width: 50.sp,),
- SizedBox(height: 4.sp,),
- Text('抢占第一',
- style: TextStyle(color: Colors.white, fontSize: 12.sp),),
-
+ Image.asset(
+ getMsgImage('msg_first'),
+ width: 50.sp,
+ ),
+ SizedBox(
+ height: 4.sp,
+ ),
+ Text(
+ '抢占第一',
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ ),
],
),
),
- Expanded(child: SingleChildScrollView(
+ Expanded(
+ child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
- child:Container(
+ child: Container(
// width: 50.sp * 10,
- child: Row(
+ child: Row(
children: [
peopleWidget(),
peopleWidget(),
@@ -163,17 +179,25 @@ class MsgPage extends StatelessWidget {
),
);
}
- peopleWidget() {
- return Container(
- margin: EdgeInsets.only(left: 18.sp),
- child: Column(
- children: [
- Image.asset(getMsgImage('msg_first'),width: 50.sp,),
- SizedBox(height: 4.sp,),
- Text('抢占第一',style: TextStyle(color: Colors.white,fontSize: 12.sp),),
- ],
- ),
- );
- }
+ peopleWidget() {
+ return Container(
+ margin: EdgeInsets.only(left: 18.sp),
+ child: Column(
+ children: [
+ Image.asset(
+ getMsgImage('msg_first'),
+ width: 50.sp,
+ ),
+ SizedBox(
+ height: 4.sp,
+ ),
+ Text(
+ '抢占第一',
+ style: TextStyle(color: Colors.white, fontSize: 12.sp),
+ ),
+ ],
+ ),
+ );
+ }
}
diff --git a/circle_app/lib/components/my_app_bar.dart b/circle_app/lib/components/my_app_bar.dart
index ed40920..9f52a30 100644
--- a/circle_app/lib/components/my_app_bar.dart
+++ b/circle_app/lib/components/my_app_bar.dart
@@ -11,7 +11,7 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
this.backgroundColor,
this.title = '',
this.centerTitle = '',
- this.actionName = '',
+ this.actionWdiget,
this.backImg = 'assets/images/navigator/back.png',
this.backImgColor,
this.onPressed,
@@ -25,7 +25,7 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
final String centerTitle;
final String backImg;
final Color? backImgColor;
- final String actionName;
+ final Widget? actionWdiget;
final VoidCallback? onPressed;
final bool isBack;
final bool isDiyBack;
@@ -38,7 +38,10 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
final SystemUiOverlayStyle overlayStyle = ThemeData.estimateBrightnessForColor(bgColor) == Brightness.dark
? SystemUiOverlayStyle.light : SystemUiOverlayStyle.dark;
- final Widget action = Container();
+ final Widget action = actionWdiget == null ? Container() : GestureDetector(
+ onTap: onPressed,
+ child: actionWdiget,
+ );
final Widget back = isBack ? IconButton(
onPressed: () async {
@@ -92,7 +95,9 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
children: [
titleWidget,
back,
- action,
+ Positioned(
+ right: 15.sp,
+ child: action),
],
),
),
diff --git a/circle_app/lib/router/app_pages.dart b/circle_app/lib/router/app_pages.dart
index 2bb4d52..ccf25a0 100644
--- a/circle_app/lib/router/app_pages.dart
+++ b/circle_app/lib/router/app_pages.dart
@@ -3,6 +3,8 @@ import 'package:circle_app/app/aboutapp/view.dart';
import 'package:circle_app/app/account/binding.dart';
import 'package:circle_app/app/account/view.dart';
import 'package:circle_app/app/blacklist/binding.dart';
+import 'package:circle_app/app/call_out/binding.dart';
+import 'package:circle_app/app/call_out/view.dart';
import 'package:circle_app/app/friendslist/binding.dart';
import 'package:circle_app/app/friendslist/view.dart';
import 'package:circle_app/app/help/binding.dart';
@@ -83,5 +85,10 @@ class AppPages {
page: () => UserinfoPage(),
binding: UserinfoBinding(),
),
+ GetPage(
+ name: AppRoutes.Call_out,
+ page: () => Call_outPage(),
+ binding: Call_outBinding(),
+ ),
];
}
diff --git a/circle_app/lib/router/app_routers.dart b/circle_app/lib/router/app_routers.dart
index 5d3c8c8..6a169c5 100644
--- a/circle_app/lib/router/app_routers.dart
+++ b/circle_app/lib/router/app_routers.dart
@@ -1,6 +1,7 @@
abstract class AppRoutes {
static const Home = '/home';
static const Complete_materialPage = '/Complete_materialPage';
+ static const Call_out = '/Call_out';
static const MineFragment = '/home/minefragment';
static const SetUpActivity = '/user/SetUpActivity';
static const AccountActivity = '/user/AccountActivity';