From 7294b02d3ba59a7ac9ce34a0f720df0e28560b7a Mon Sep 17 00:00:00 2001 From: wylyl22 <2373073266@qq.com> Date: Thu, 8 Sep 2022 18:04:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B7=E7=A0=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/icons/notxlphone.png | Bin 0 -> 1274 bytes assets/icons/nullphonelist.png | Bin 0 -> 5929 bytes assets/icons/rylyphone.png | Bin 0 -> 2907 bytes assets/icons/set.png | Bin 0 -> 1186 bytes assets/icons/txlphone.png | Bin 0 -> 1864 bytes assets/icons/zdphone.png | Bin 0 -> 1819 bytes lib/gen/assets.gen.dart | 22 ++++ lib/ui/home/home_page.dart | 82 +++++++++--- lib/ui/home/set/phone_set_page.dart | 158 ++++++++++++++++++++++++ lib/ui/home/set/specify_phone_page.dart | 158 ++++++++++++++++++++++++ lib/ui/user/user_page.dart | 6 +- lib/ui/widget/appdialog.dart | 1 + lib/ui/widget/plone_bottom.dart | 4 +- 13 files changed, 407 insertions(+), 24 deletions(-) create mode 100644 assets/icons/notxlphone.png create mode 100644 assets/icons/nullphonelist.png create mode 100644 assets/icons/rylyphone.png create mode 100644 assets/icons/set.png create mode 100644 assets/icons/txlphone.png create mode 100644 assets/icons/zdphone.png create mode 100644 lib/ui/home/set/phone_set_page.dart create mode 100644 lib/ui/home/set/specify_phone_page.dart diff --git a/assets/icons/notxlphone.png b/assets/icons/notxlphone.png new file mode 100644 index 0000000000000000000000000000000000000000..3abc656fdab00f43f8de0b5305e4f7b3662aedc5 GIT binary patch literal 1274 zcmVPx(v`IukRCr$Pn?Z;iMHGhLtGK(yOAd)amLnp9d<~LYyz?d#5q5Qh;L?25%IkwNj|m- zV%#=C5WGu7n?Q)@yi)3jjUQ`3LI`u0Ud}mPkWyZ;31ZwfLI@L=i7#tcq?8LbemtNO zY95dWben)*VtFC7A_oOQaGr?X$W^iDlO*}ZCJ~O?rWJtZ=H{N(T7L@w_X5DrX_^LW zYioaxd$Km;wE~a{-0Y?S;ITAKm)inoBd+Glyv?1h%ceC7s%yeq_0uSz+1c67%*@RD z0Pt`=a3Z<|0Lx0LvqjHhQ54-{u18U{rRTLMip&`ki=yae8L&nH2_b$2fTut>1Jk$Q^_xpQ_l+-jJbHrheI)=3y zjIn1|S66=+0*G}wo!$C0Ye1ayOXeL_Hon&SaIe?9wA~4~%J|)G_Yh<3Vy=K(R!VIalqzFn zeOv%7A>unZXXei%=6?~5Hz9<1|G$_6bVey<^?wp;KtT{3CZaELG|Xw>S*`U?jIr!w zuvS=F>s^eoCjsDS{v`k+zLF%#rlPhIlr^CF`T5=J>+4qmVDDBOHqiIl^z`(;m6et2 zHomO^8E4&Y_W)zee7HGf(^c2IFAg>@d k0$xFG{Cp1b3UX7>e|2F=b_;*vy#N3J07*qoM6N<$f}4I+@Bjb+ literal 0 HcmV?d00001 diff --git a/assets/icons/nullphonelist.png b/assets/icons/nullphonelist.png new file mode 100644 index 0000000000000000000000000000000000000000..231b3e6118a1891f88a32320d297fdcba9314788 GIT binary patch literal 5929 zcmchbXE>Z)x5q_DX4KK68_|2BMQ4ntBa=b2(TNs>(IO0D#wZaUCP)w&B3g)uE(oHI z5|_33H2XecNs=nV~^ z2y#D4e!2ly$Tp>S@Q~bHLLu}a6y*avzbPo#e;Gn`%tP%r>|jrMyZp;vv4t4QWGr~q z%YVG;ASFx%p}i6q7XfnAx6Gm9XXTEMsL1D`>(cyANe7IdqeaP4LZe)Wa*mQw@6rN> zo_}Bwx*Lk(;k{;%KtcQUk4v|3{i$6*Va%qdyUNu1!P~-y<$jYEFUJaIhY$+OMxrN6f}ggS#z%*&lS$Q!!l$jXcNE+{yq==$;UJ;kjIEev{)F~3FOs|C^T`p z2Ng~jjah^#aA{bxb{xd55TRAb3E(05}#3Qy`heRa_xAX7Xvv$}*_l{PWQfLM!qeD`K9%;fx`mM#* z5M9?X4Pm5Jv&P0oKbE0FlXg6!s;U~&;($bk|Jm;1zp(4`;B{_qc5m=V1-?-UUjLS90(qU;7!x_IEt0Z2kfWyLe5Prb zs`c!<883(i^|q|6%pt2?Jv4uD(G8p$>5wG}6c{hFt?jfY8f>~+?{`=&n_tCDPEM-6 zuRiy!-Z3^d4m>^Fu3rTpzE=Q#G)H9pnO5UTh8vyvq`SrO=x20dCK;1jY?GE+<#TRD z-?@`YbxDiLcjl94Sjn`I;XubV1V4)x3bm^!czheky<}Kunv?4E%0Vl2_ypj17;<(T zgfb<4R3E$$R7zpJr_HJt{cx#O-4IE~)2SqZO`gV=MWnM!~>VwJq-B3R>?IK;;_xCI< zo3IHKI*!bgQ&UqobnmWuNylr5*zXg0J#B!ZS)HEsIsia$_H!zpHDLll`dNMNva3-- zioV%etty*QVc_yuTYSf}D3HWHd-`!d>m~50$sD`ehwB2EgeGhO`v2X{3E^foeO%Y4 zpY-~7=faiMeMHPIzRJ9m^kd3qvoH4nV*>Of;F?H9uj{Ge&Ff-y2{&B>#`qD-Qm)ll zOS35~9LD6bgu5EL{-KMDzcT*W&d=5u!-ED@+xD@|cdtb`b>}+Do`Dh)kud>V28+Vq z=o5HdrDb7D43{HFs0V*4pUT>6*3c5dzoNv{dgMQ^{hW6}Mj;v2v{jMWNwigS{Uz}y zOF?5=bN5j=uHZCklGkO~*+~E)oavo-a+YQZ3px<_ekp>`NJ z7@jTAzQ>@ZrdIu`hZU>5+1uL-Ml^&KgN|)6g=|Bbp;$Qs02`%VA{`ZF$*w@(i*jUr z+i*=y&3@dw1`0icGpT$vsV}XP_8aq163@wXa z{K?jP4QwtZM6a^+kani{8C9CeC6%r5vVo4(*a$GGmg=szvq~uT=4}8QO%E3&>Gt*g zE^FxV@ZMa1D!^Ak7@vHeF5m@|y80g82_Qhg;utSr&yq71-hTrnJ@lPE7K}q?gG~(1 z${i1c`N?0^B;shWZ>WTAAeHr2KqG~&zG|pDpM>kTmn>Hpif7r@n-_kO7Ztn>C!|z$ z1Gk;VmUZ0#XVPsW2_F2PAlHO2G|}@^oXy6O;Tgk+tA0!`??F%I+1kXw<^a~h?w>NI z^wrmRl~3 zyaJ-Om`lt^z5x;A-{ZnB`sytEN-4m8t@^<`>|N=x9JMzgVln}J0p++iRY5CprRe)4 zRmpL7dzhpU#w)?<^=ZJ@>2z)EGE&feXK@(Mde8l5#ksFPThy*Bp9e4goC2ywbIvh!FuBF*F2H1ZvSf z^tmh>Lc6Ylg*OAn@ymQzo>dR0^7C{jpo}J~eRC|3te9-X%s~ZuwtX{#R11Jf=0$AN zIN?DOR0%Aum^#zW<*@Ys!THk^j#vINAll*<;W!%>BAM(P|B(G~P*OGMMR0KN%KpZb zlux##jP9yC=d=@;!Jg2^2EjsxQ&@I}JqCpP{#TmkXIe2J|CevCatSP-pPiUVD+3qv z|N9&?gnzRNHb?a#jRR}aWfxKs*tq9e5Eh1xJ}#8?7i{!8y6zmqo+Tn=Z_5HjixWYmTK zMxB-OM@KP%{c!-Pmd^O$HeqW=(FCxV=m>lCy?Kb?b7e$6FLLcoFgw18YpJnyFr+>E z{kdw&$$ld_o{^Xs7h~*WDt}0?5NZNZB;_J!*~-|qL|aZUD~HN`l?h$Mq-x+73$2e~ zIc(mv@87a9LlpI-;AoZGeT)Ww8!g}8_I-r9PUHGHumGP|sE-Ky!8J0K$=v!T+={c!mkZ(p7pKB0f(J#pXJKbd^ykm~%uRFQ{axa_myJ2Y;S@&47xG!ly=WPeCOrF?n1tst?^e zlOm!yA+_T9wU`9A7$*niW9+KQ7N{=PWAZD*LMzk#P^0%OMlIr9L3PFWV~#SC@~-;D zW=hT8GkCe}*Qv?jjgs6cfY0~-YMdGM~H!8cV^RnX8VPY$3fZuyIgv5`1(XeVC* z<}h>N=O_PISL_d1oWQ_4x4K-TE!J3n9MS7^9#yLH01+&(uTZpJCjotDZG9k~AO!+<)% zu4#+%v$|iKy0@)3i6ljwDM^#xI2Zu3o#iofPd z-*kQ%XWz4Xiu(~3Xe##SZa3i>`w}@w@%8$aqkUCEg{M-0htjgLwR{hLPHGhMsIQY# zOOZ#VmLH`~l-yO!3Nbqx?`99S9y^@MURhnVuYtt2D*@pD&_Dqb$>tC-+*vw4 zKDK-rS~37&+i8;@pmqk6P-<*lzU4BeDpPWdbY6G_ymQ630k7|*w z0(aaoZBz6~W^Z$Ha{Tw=(r#HIV@C%+aJtGKQ{J;C(kjn!qRNrRbovw+T6Ue z+%oUX_Im8;`TO_S*jO=tBo=;BL_^TD9!q-WS{_C5!WpPt*K7qUqG0c&-Ew~UcF@H3 z?I<_Iu0FtRm6GVG{V>+_=E7svyW#5!6H6T+t`OnBUJNQFn;Yc}R<0Ms=NI(%!@_wr z4N6N(k!MN0SUQ@AA_riSa!IJLJbCNN8v<%Jeuw@R$WtEdIekE}`KB5jHY`CJP&e!vpmPq2}U_rE3wp1SNEd0EuJv#RB_vW=LE~eH=r%r47>23}cJ*!XQ zaw1=F7P*XXzZAF$tv)@Rks~A6DKK7iFB9(7aRAw zLV(Hd(Z0IJll^1fk~rlp(%J;0UX^Rnffyp4FstwRQq#$|a1#$#lEq$$-45b^q$_!=U`f+veeermbkXI_TIvcOzrn(LKli7Bjz@edsZ>m2OZTP9cpbD z#(D`Q&dz`~9NBw7QYaVzQh$t4K0NXr-5nd;2yYHXkOZqBfTAxsA9;cl$2iblu!DWeqIu z!y7zb(!v+^_*u=muUE2FPAT?+!La>dI?JYh7Vs1 z5E_(k-7SsIVCim=8hoBX)rh>A2R%a~l$o^VTK5D&(cs)SVN_D6LB<{RNC?0p*$%Jr zpuK6N@Xp{_31FhLv*K*B+WY=~VFiz&I$kn?X;Gddq8ImLDajkX0!v+ZKdf-}n0$;% zU3F+%r`!FMmpzr4{(R*EzkIYy&aUz<%i!jWNV+@fe?oSAG>Pcq4JqOPIm7;o*Xj}K z9JA?{sb%Q(Eb7QvB4Ium1Mm0e2?U}Rt1!f)eotU7F(sLCSMUuS#ENV1T*Coxn)huG;-6k?7{+IfwOUKaZw8)nO~nJJx((< zy6JSe7zE2+C_WbHD)=tV-yJE63DA+rQ(sEG?f`+QKA64oy=u;FcA-w89t-EEAs|x{ z#gaK!Nz)guVV^wVt;W%xYetn-WMIDE`ALxwF^&bn-j7X95k*SP-iIbnOk=zzmESk_ z_>N^PkB8_(w7Si(NRd7X}XS9vVCWhswPCKB)j;S8DVg8 zEJ##ZMp{{g`bR{ZRhJ|&D{UGl2Dx7S#0ps%o4U2oT%^z4ewtE>KNf?Hh~g29$#c&o zb<|cnG|aqr5kw;KmkVBa=rGiC{kqyhJpR}w-K|Aon~70aPgi{4myJVpM!$vsUPzTMjC563wb5hdAKq z?1AfRu#1NppN)8sCb2R@WXxE7G{siEVk3=VJ-16zSNbGJ?zAcM?Qi)l1f=M5j_f`E z!_fHr&XT)YefioF+3X68z;=f|@zQIcA*I+bZf#gCX%oubc!NWvZjc1lSnjpZXl)ocIL8V%;In9r|}qZOf&vK$>)+ zxstS)I>BL!`h_(u%KP80vAdXJ(NDM+Tnqr(uU~a$17(wyCnhFZ^6;t(=UJ*aG6=`< z2d%quLjfAN!hPuDmL;n1%KoR6Hkvbx5-4x_D@p8=IJl;yj$)HTsdM1&S`P! z#7K4Y>8(~XLuRTHfXSn*WGxCtw+;Th%)>aJ7qXs$VI7JTPHVh07j^aZ@xm*!AX#Cm z5?zWMrkUPsKl}{MmsRi2l+jl~JxbvnAtD8%6LyeaX3OwH|9@(FjnKe~PgdjpV?kv{ zXS{yFCi6o&KEV7ea#FRwl*P7=4e2NeE4944I!|u25M}j6!Kqui>_BzaGXc^bCV1Rbf8Nq>E zJJb_AHn$Ma78A|!x!hJ3hhJmA6nd%e&I6R>E;ap==XU_5I@vof@T105DfymF&@#SL@8`Xtl+# zU0a;3eE&S6bTm4$D;&_!+j6+6%DhQ@tYw(G>pqZugsu0P9<$E~PX?9D7gvC`zHSZb zyTh6SUZf;M2mJ>^rqNw8q|)R2vXnNd@QP>*mKsi3K;$(StPj9Wy^q(}6{ ZRY1x(K12ND0J-)}VW?*cEr&Qh`4`xaE|mZP literal 0 HcmV?d00001 diff --git a/assets/icons/rylyphone.png b/assets/icons/rylyphone.png new file mode 100644 index 0000000000000000000000000000000000000000..4feca3a00fec81fc281a8488d736bcb5153db49e GIT binary patch literal 2907 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 FV1kPSWsCp- literal 0 HcmV?d00001 diff --git a/assets/icons/set.png b/assets/icons/set.png new file mode 100644 index 0000000000000000000000000000000000000000..70ed20d781790d199622c13339f94c42e76cd46f GIT binary patch literal 1186 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 JPDHLkV1niKK5qa3 literal 0 HcmV?d00001 diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart index 46c2bab..0c983d3 100644 --- a/lib/gen/assets.gen.dart +++ b/lib/gen/assets.gen.dart @@ -34,6 +34,14 @@ class $AssetsIconsGen { AssetGenImage get mySelected => const AssetGenImage('assets/icons/my_selected.png'); + /// File path: assets/icons/notxlphone.png + AssetGenImage get notxlphone => + const AssetGenImage('assets/icons/notxlphone.png'); + + /// File path: assets/icons/nullphonelist.png + AssetGenImage get nullphonelist => + const AssetGenImage('assets/icons/nullphonelist.png'); + /// File path: assets/icons/permissions.png AssetGenImage get permissions => const AssetGenImage('assets/icons/permissions.png'); @@ -44,15 +52,29 @@ class $AssetsIconsGen { /// File path: assets/icons/right.png AssetGenImage get right => const AssetGenImage('assets/icons/right.png'); + /// File path: assets/icons/rylyphone.png + AssetGenImage get rylyphone => + const AssetGenImage('assets/icons/rylyphone.png'); + + /// File path: assets/icons/set.png + AssetGenImage get set => const AssetGenImage('assets/icons/set.png'); + /// File path: assets/icons/sms.png AssetGenImage get sms => const AssetGenImage('assets/icons/sms.png'); /// File path: assets/icons/switch1.png AssetGenImage get switch1 => const AssetGenImage('assets/icons/switch1.png'); + /// File path: assets/icons/txlphone.png + AssetGenImage get txlphone => + const AssetGenImage('assets/icons/txlphone.png'); + /// File path: assets/icons/weixin.png AssetGenImage get weixin => const AssetGenImage('assets/icons/weixin.png'); + /// File path: assets/icons/zdphone.png + AssetGenImage get zdphone => const AssetGenImage('assets/icons/zdphone.png'); + /// File path: assets/icons/zhifubao.png AssetGenImage get zhifubao => const AssetGenImage('assets/icons/zhifubao.png'); diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index afa35a5..681195e 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -7,6 +7,7 @@ import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:project_telephony/ui/home/content_connect_page.dart'; import 'package:project_telephony/ui/home/content_refuse_page.dart'; +import 'package:project_telephony/ui/home/set/phone_set_page.dart'; import 'package:project_telephony/ui/user/privacy_rights_page.dart'; import 'package:project_telephony/ui/widget/appdialog.dart'; @@ -26,13 +27,12 @@ class HomePage extends StatefulWidget { bool sms = false; bool plone = false; -bool kg=false; +bool kg = false; final service = FlutterBackgroundService(); + @override class _HomePageState extends State with WidgetsBindingObserver { - - @override void initState() { super.initState(); @@ -124,20 +124,18 @@ class _HomePageState extends State with WidgetsBindingObserver { offstage: (sms && plone && callLog && kg), child: GestureDetector( onTap: () { - if(!(sms && plone && callLog && kg)){ - if(!(sms && plone && callLog )){ - Get.to(()=>const PrivacyRightsPage(name: "权限说明")); + if (!(sms && plone && callLog && kg)) { + if (!(sms && plone && callLog)) { + Get.to(() => const PrivacyRightsPage(name: "权限说明")); // Get.to(()=>const TabNavigator(index: 1,)); - }else{ + } else { BotToast.showText(text: '功能开关未开启'); - } } // print(); // openAppSettings(); }, - child: - Container( + child: Container( width: 622.w, margin: EdgeInsets.symmetric(horizontal: 64.w), padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 20.w), @@ -155,17 +153,21 @@ class _HomePageState extends State with WidgetsBindingObserver { ), 16.wb, Text( - !(sms && plone && callLog ) ? "必须权限没有授予,本APP无法正常使用":"功能开关未开启,请到我的页面开启", + !(sms && plone && callLog) + ? "必须权限没有授予,本APP无法正常使用" + : "功能开关未开启,请到我的页面开启", style: TextStyle(color: const Color(0xFFFF3F3F), fontSize: 24.sp), ), - !(sms && plone && callLog ) ?32.wb: 0.wb, - !(sms && plone && callLog )? Image( - image: AssetImage(Assets.icons.right.path), - width: 28.w, - height: 28.w, - fit: BoxFit.fill, - ):const SizedBox() + !(sms && plone && callLog) ? 32.wb : 0.wb, + !(sms && plone && callLog) + ? Image( + image: AssetImage(Assets.icons.right.path), + width: 28.w, + height: 28.w, + fit: BoxFit.fill, + ) + : const SizedBox() ], ), ), @@ -186,12 +188,14 @@ class _HomePageState extends State with WidgetsBindingObserver { color: const Color(0xFF333333), fontWeight: FontWeight.bold), ), - 8.hb, + 24.hb, Text( "希望能成为您的短信小助手", style: TextStyle(fontSize: 32.sp, color: const Color(0xFF999999)), ), - 50.hb, + 48.hb, + _getSet(), + 32.hb, _getContainer("接听后", "编辑接听后发送的短信内容", Assets.images.answer.path, const Color(0xFF74BCFF), const Color(0xFF1890FF)), 30.hb, @@ -202,6 +206,44 @@ class _HomePageState extends State with WidgetsBindingObserver { ); } + _getSet() { + return GestureDetector( + onTap: (){ + Get.to(()=>const PhoneSetPage()); + }, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 42.w, vertical: 20.w), + decoration: BoxDecoration( + color: const Color(0xFFF2F9FF), + border: Border.all(color: const Color(0xFF1890FF), width: 2.w), + borderRadius: BorderRadius.circular(16.w)), + child: Row( + children: [ + SizedBox( + width: 48.w, + height: 48.w, + child: Image.asset(Assets.icons.set.path), + ), + 16.wb, + Text( + "短信发送号码设置", + style: TextStyle(fontSize: 28.sp, color: const Color(0xFF1890FF)), + ), + 190.wb, + SizedBox( + width: 48.w, + height: 48.w, + child: const Icon( + Icons.chevron_right, + color: Color(0xFF1890FF), + ), + ), + ], + ), + ), + ); + } + _getContainer(String title, String text, String image, Color cl1, Color cl2) { return GestureDetector( onTap: () { diff --git a/lib/ui/home/set/phone_set_page.dart b/lib/ui/home/set/phone_set_page.dart new file mode 100644 index 0000000..118e826 --- /dev/null +++ b/lib/ui/home/set/phone_set_page.dart @@ -0,0 +1,158 @@ +import 'package:flutter/material.dart'; +import 'package:project_telephony/ui/home/set/specify_phone_page.dart'; +import 'package:project_telephony/utils/headers.dart'; + +import '../../../base/base_style.dart'; + +import '../../widget/plone_back_button.dart'; + +// class setItem{ +// +// } + +class PhoneSetPage extends StatefulWidget { + const PhoneSetPage({Key? key}) : super(key: key); + + @override + _PhoneSetPageState createState() => _PhoneSetPageState(); +} + +class _PhoneSetPageState extends State { + int select = 0; + List setList = [ + { + "icon": Assets.icons.rylyphone.path, + "title": "任意来源号码发送", + "text": "所有的号码来电都会发送", + // "select": true, + }, + { + "icon": Assets.icons.txlphone.path, + "title": "在通讯录中的号码发送", + "text": "只给在通讯录中的号码来电发送", + // "select": false, + }, + { + "icon": Assets.icons.notxlphone.path, + "title": "不在通讯录中的号码发送", + "text": "只给不在通讯录中的号码来电发送", + // "select": false, + }, + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + elevation: 0, + title: Text( + '发送号码设置', + style: TextStyle( + fontSize: BaseStyle.fontSize34, + color: BaseStyle.color333333, + fontWeight: FontWeight.bold), + ), + titleSpacing: 162.w, + leading: const CloudBackButton(isSpecial: true), + backgroundColor: kForeGroundColor), + backgroundColor: kForeGroundColor, + body: Column( + children: [ + _getList(), + 24.hb, + GestureDetector( + onTap: () { + Get.to(()=>const SpecifyPhonePage()); + }, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 30.w), + height: 144.w, + child: ListTile( + leading: SizedBox( + width: 72.w, + height: 72.w, + child: Image.asset( + Assets.icons.zdphone.path, + fit: BoxFit.fill, + ), + ), + title: Text( + "指定号码不发送", + style: + TextStyle(fontSize: 32.sp, fontWeight: FontWeight.bold), + ), + subtitle: Text( + "通过添加指定号码来设置不发送", + style: TextStyle( + fontSize: 28.sp, color: const Color(0xFF999999)), + ), + trailing: SizedBox( + width: 48.w, + height: 48.w, + child: const Icon(Icons.arrow_forward_ios), + )), + ), + ) + ], + ), + ); + } + + _getList() { + return Container( + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 30.w), + height: 500.w, + child: ListView.builder( + itemBuilder: (context, index) { + return _getListBox(setList, index); + }, + itemCount: setList.length, + ), + ); + } + + _getListBox(List item, int index) { + return GestureDetector( + onTap: () { + select = index; + // print(_selectIndex); + setState(() {}); + }, + child: ListTile( + leading: SizedBox( + width: 72.w, + height: 72.w, + child: Image.asset( + item[index]["icon"], + fit: BoxFit.fill, + )), + title: Text( + item[index]["title"], + style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.bold), + ), + subtitle: Text( + item[index]["text"], + style: TextStyle(fontSize: 28.sp, color: const Color(0xFF999999)), + ), + trailing: SizedBox( + width: 40.w, + height: 40.w, + child: Radio( + onChanged: (int? value) { + select = index; + // print(_selectIndex); + setState(() {}); + }, + groupValue: select, + value: index, + ), + ), + + // BeeCheckRadio( + // value: index, + // groupValue: [select], + // ), + ), + ); + } +} diff --git a/lib/ui/home/set/specify_phone_page.dart b/lib/ui/home/set/specify_phone_page.dart new file mode 100644 index 0000000..c40d6c1 --- /dev/null +++ b/lib/ui/home/set/specify_phone_page.dart @@ -0,0 +1,158 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:project_telephony/ui/home/home_page.dart'; +import 'package:project_telephony/utils/headers.dart'; +import 'package:project_telephony/ui/widget/plone_bottom.dart'; + +import '../../../base/base_style.dart'; + +import '../../widget/plone_back_button.dart'; + +class SpecifyPhonePage extends StatefulWidget { + const SpecifyPhonePage({Key? key}) : super(key: key); + + @override + _SpecifyPhonePageState createState() => _SpecifyPhonePageState(); +} + +class _SpecifyPhonePageState extends State { + final EasyRefreshController _refreshController = EasyRefreshController(); + + @override + void dispose() { + _refreshController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + elevation: 0, + title: Text( + '发送号码设置', + style: TextStyle( + fontSize: BaseStyle.fontSize34, + color: BaseStyle.color333333, + fontWeight: FontWeight.bold), + ), + titleSpacing: 162.w, + leading: const CloudBackButton(isSpecial: true), + backgroundColor: kForeGroundColor), + backgroundColor: kForeGroundColor, + body: EasyRefresh( + firstRefresh: true, + controller: _refreshController, + header: MaterialHeader(), + // footer: MaterialFooter(), + onRefresh: () async { + // await userProvider.updateUserInfo(); + + setState(() {}); + }, + child: ListView( + children: [ + _getNullList(), + PloneBottom( + onTap: () { + showModalBottomSheet( + builder: (BuildContext context) { + return Container( + width: double.infinity, + height: 750.w, + padding: EdgeInsets.symmetric(horizontal: 32.w), + child: Column( + children: [ + 48.hb, + Text( + "添加号码", + style: TextStyle( + fontSize: 34.w, + fontWeight: FontWeight.bold), + ), + Expanded( + child: ListView( + children: [ + _getAddPhone("通话记录添加", "通过本机通话记录添加号码", () { + + }), + _getAddPhone("通迅录添加", "通过本机通讯录添加号码", () {}), + _getAddPhone( + "添加单个或批量号码", "通过输入号码段添加批量号码", () {}), + ], + )), + PloneBottom( + onTap: () { + Navigator.pop(context); + }, + hPadding: 32, + border: true, + textColor: const Color(0xFF1890FF), + color2: const Color(0xFFF9F9F9), + color1: const Color(0xFFF9F9F9), + text: "取消", + ), + 32.hb + ], + ), + ); + }, + context: context); + }, + border: true, + color2: const Color(0xFF74BCFF), + color1: const Color(0xFF1890FF), + text: "添加", + ), + ], + )), + ); + } + + _getAddPhone(String title, String text, VoidCallback widget) { + return GestureDetector( + onTap: widget, + child: ListTile( + title: Text( + title, + style: TextStyle(fontSize: 32.sp, fontWeight: FontWeight.bold), + ), + subtitle: Text( + text, + style: TextStyle(fontSize: 28.sp, color: BaseStyle.color999999), + ), + trailing: const Icon(Icons.chevron_right), + ), + ); + } + + _getNullList() { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + // crossAxisAlignment: CrossAxisAlignment.center, + children: [ + 490.hb, + Image.asset( + Assets.icons.nullphonelist.path, + width: 240.w, + height: 212.w, + fit: BoxFit.fill, + ), + 48.hb, + Text( + "这里是空的", + style: TextStyle( + color: const Color(0xFF999999), + fontWeight: FontWeight.bold, + fontSize: 36.sp), + ), + 16.hb, + Text( + "还没有添加指定号码", + style: TextStyle(color: const Color(0xFF999999), fontSize: 28.sp), + ), + 490.hb, + ], + ); + } +} diff --git a/lib/ui/user/user_page.dart b/lib/ui/user/user_page.dart index 4798fb9..09be0db 100644 --- a/lib/ui/user/user_page.dart +++ b/lib/ui/user/user_page.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart'; -import 'package:permission_handler/permission_handler.dart'; + import 'package:project_telephony/base/base_style.dart'; import 'package:project_telephony/ui/login/login_page.dart'; import 'package:project_telephony/ui/tab_navigator.dart'; @@ -20,14 +20,14 @@ import 'package:telephony/telephony.dart'; import '../../constants/api.dart'; import '../../model/network/api_client.dart'; import '../../providers/user_provider.dart'; -import '../../utils/hive_store.dart'; + import '../../utils/toast/cloud_toast.dart'; import '../../utils/user_tool.dart'; import '../home/call.dart'; import '../widget/appdialog.dart'; import 'content_details_page.dart'; -import '../home/home_page.dart'; + class UserPage extends StatefulWidget { const UserPage({Key? key}) : super(key: key); diff --git a/lib/ui/widget/appdialog.dart b/lib/ui/widget/appdialog.dart index 767c65c..362e63d 100644 --- a/lib/ui/widget/appdialog.dart +++ b/lib/ui/widget/appdialog.dart @@ -70,6 +70,7 @@ _getBotton(String bContent, context) { var res = await apiClient.request(API.app.trialVip); if (res.code == 0) { CloudToast.show(res.msg); + Navigator.pop(context); } else { CloudToast.show(res.msg); Navigator.pop(context); diff --git a/lib/ui/widget/plone_bottom.dart b/lib/ui/widget/plone_bottom.dart index 7d4a369..f364911 100644 --- a/lib/ui/widget/plone_bottom.dart +++ b/lib/ui/widget/plone_bottom.dart @@ -12,6 +12,7 @@ class PloneBottom extends StatefulWidget { final bool blM; //是否间距 final bool border; //是否有边框 final double opacity; + final int hPadding; const PloneBottom({ Key? key, this.text = '返回首页', @@ -21,6 +22,7 @@ class PloneBottom extends StatefulWidget { this.blM = true, this.border = false, this.opacity = 1, + this.hPadding=64, required this.onTap, }); @@ -40,7 +42,7 @@ class _PloneBottomState extends State { alignment: Alignment.center, padding: EdgeInsets.symmetric(vertical: 14.w), margin: widget.blM - ? EdgeInsets.symmetric(horizontal: 64.w) + ? EdgeInsets.symmetric(horizontal: widget.hPadding.w) : EdgeInsets.only(left: 0.w), decoration: BoxDecoration( border: Border.all(