From a257f53c13828d62334608c4c674ad41fb9bee1e Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Wed, 29 Jun 2022 11:04:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E4=BC=98=E5=8C=96;=20=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=BA=95=E9=83=A8=E6=8C=89=E9=92=AE=E4=BC=98=E5=8C=96;=20?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=A2=9E=E5=8A=A0=E5=9B=BD=E9=99=85=E5=8C=BA?= =?UTF-8?q?=E5=8F=B7=E9=80=89=E6=8B=A9,=E5=A2=9E=E5=8A=A0=E5=8F=B0?= =?UTF-8?q?=E6=B9=BE=E6=89=8B=E6=9C=BA=E5=8F=B7=E7=99=BB=E5=BD=95;=20?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=BC=98=E5=8C=96,=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=A7=86=E9=A2=91=E8=87=AA=E5=8A=A8=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E6=92=AD=E6=94=BE;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/image/2x/lose.webp | Bin 0 -> 2252 bytes assets/image/2x/pop_background.webp | Bin 0 -> 94126 bytes assets/image/3x/lose.webp | Bin 0 -> 3560 bytes assets/image/3x/pop_background.webp | Bin 0 -> 232606 bytes assets/image/pop_background.webp | Bin 0 -> 32250 bytes assets/map_style/area_code_full.json | 794 ++++++++++++++++++ .../community_view/class_details_video.dart | 5 +- .../community_view/community_dynamic.dart | 2 +- .../integral_store_details_page.dart | 5 +- lib/login/login_page.dart | 3 +- lib/login/new_login_page.dart | 323 ++++--- lib/login/phone_address_page.dart | 158 ++++ lib/main.dart | 18 +- lib/mine/manage_address_page.dart | 6 +- lib/mine/recharge_page.dart | 18 +- lib/order/exchange_order_page.dart | 92 +- lib/retrofit/retrofit_api.dart | 7 +- lib/retrofit/retrofit_api.g.dart | 27 +- lib/setting/help_feedback_page.dart | 6 +- lib/setting/logout_ing.dart | 85 +- lib/setting/logout_page.dart | 6 +- lib/setting/platform_code_page.dart | 339 ++------ lib/setting/platform_pay_code.dart | 156 ++++ lib/setting/platform_pay_code_success.dart | 255 ++++++ lib/setting/setting_page.dart | 19 +- lib/store/shop__details_page.dart | 1 + lib/store/store_order.dart | 14 +- lib/view_widget/receive_success.dart | 91 +- lib/view_widget/sign_in_widget.dart | 80 +- pubspec.yaml | 2 +- 30 files changed, 1933 insertions(+), 579 deletions(-) create mode 100644 assets/image/2x/lose.webp create mode 100644 assets/image/2x/pop_background.webp create mode 100644 assets/image/3x/lose.webp create mode 100644 assets/image/3x/pop_background.webp create mode 100644 assets/image/pop_background.webp create mode 100644 assets/map_style/area_code_full.json create mode 100644 lib/login/phone_address_page.dart create mode 100644 lib/setting/platform_pay_code.dart create mode 100644 lib/setting/platform_pay_code_success.dart diff --git a/assets/image/2x/lose.webp b/assets/image/2x/lose.webp new file mode 100644 index 0000000000000000000000000000000000000000..9e8a699a1bb044fd2f49025a1319b0b62bff033d GIT binary patch literal 2252 zcmb`Fc|6qX8o=MAFqR@Wj-|28NryT@cG)H|))|boYeLArG?kL2!l7gRAsmrqvdkn7 zCxeKJD507&mPRI#P9f`<7-sIzIk!*ebMLvI`_FlP&+`2}@AH1%=Up5z$B%aj0^n+4 zj&;H6xgh`mhhfYAT`_1hR+ z0INd)_5jch{l)nIO9`FwJL3x%Ex<;Mf)@v1+bNhO1ODLXE%y0?)3!Lu*%1xbl)`)< z;7{!HCq7S%Ai_1hTlKyXQCmC)vr%Zs*{!v*PbmD7btR)tsV?)uB0sGBJL z(VNkfeHAKhVncSXW-+e}!N71H?SdDcu3trE_eaXLk5Tb-jpRY5I_8x}(a=w@ZzM0R z^BRZB$q=bln-a7gzXM@}`GoQ;CO5Fd@Ipr9k9fR#J-ylmkB3ASC_506SnX7d^ER=1 zs9G!w#m9$7nx2HJcj{rBw+jmLk6_AmQppLO_T>f%2??DpI2k&K#a2xa&)bj~rFLc4Cd`cI|z>T$;3r*Lf| zWS?Y{O!sC@stx9*racq*a`^ud6QJbr7lqyOoQ#rIQ%K5Q{x#J%(*GA~+14HYwnr6BFQ? z|C4KnJtQ-5yaIAHF6OXr`$`3A}538hYfvqi8UdsXF(qK`;Z24W$o|@V?x?lP zy&p4m3cI~**8{hA-#jt!`I?qpcgb>;fGS}Q>mJ!FZ?bu}<*nEZX>f?}j6O|b>bd9a zYmv=oHkEMWtk=V01H+e-ho_5hk{16~A}x&D<2c@5S+o5SsHEXEuaEVxP$wFvra#h+ zbNCsVqzU=~eukhy&d*wsBZamZGU^9;W0Q4}g0C_4(;@NAi;wgYLop({w@%8V@5$OI zK7b7EyayO@=O;alchWYl&rNiRh%9ayvHXx0NH&^ zk^gh@a9G>kH_8Ya#rdkK^bVo1#f6hb8ApSnZ*`I%JFyW`S5(4`a4E|BC8QDJ$xCjc z;x5a26G+V$F;lwVqzb=B>+YN4%N_|jj;iFD?o#eFFQ^BzqI*`$r*3qu%(q6W&`hsk zz4MNo-hJr2M5#Ci9bWz1P)0Rv;Pf+YlPvX!QlUF>U>tg5T?(`Nn7Hcfh?MH=o+oWy z=O!Vm>#MnfPP3KNV|=5~L^8q?Eyva3cKmZPU*?(6_bToGI9%PfTd9kGQI)VVn&hBL zkaYb;a5u*OqK(C7gM+vdhbd-}azkpbMI~=2Nmo*z&^=IrI0hAsOXz22sG3i0j8g=& zIrdk3R|w4uX-e!z8?hc&tfFXEO6(7ZxMsU$HqaS$;)y#6Ig`{Q)4Y)+%U|D6moAm= z%+9q^79u4qZPe^TeWpn>4~lo@73qeLw_RAC?l01bF<`nC|?U^-!y7L=A5gUs$2d}AvI}vjkn>$ z<+XG*j6&u}@0t{jM|1zBcKevvM5tuyrOGgu&4t=ax@tRKJmnS4gpb|Q?;Fy%M4YT> z@p@8Q@v%N`HtR$8{mv82JOv|0iLjZ~&7j*q*u4C}l2$LoGzZ;A+DhttY7l)}6|-?< z$aDXU>AjGO=ns!=d}D(U6SK*IlDb?2ztUkkX*ONTZnAm);byHi&6#(@y5MLqhaETX zFvdBft{Y?19&I2W(;Ycky!K(ZBfi5ZUH;TT7Aufq&4G-?`v! zQiN+?+=rY=Zw&G$KJQqcJxOmApm0sxHYGIY)hGH@f<)INqnFTm`!{Xc+|+H-*W07( z?@6!rh?^*h6s+!njIr9^un7{zao0!L6p429ip>feYKx@*wu;ueufwic&D44yTGe-V zeNHHr>_s&x(|A2x!x(%~&^RaN#Ou4Yie(9lI>*yZSrww*JTHR5bP(H6%q9Lb0RIB7 CTayp~ literal 0 HcmV?d00001 diff --git a/assets/image/2x/pop_background.webp b/assets/image/2x/pop_background.webp new file mode 100644 index 0000000000000000000000000000000000000000..d6ebcc2d9dab02ec33fc6e5cd640e17fa9d05b48 GIT binary patch literal 94126 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 Pg214r3FFp-EEeEjk5N0_ literal 0 HcmV?d00001 diff --git a/assets/image/3x/pop_background.webp b/assets/image/3x/pop_background.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0b735bd0ebddaaa8af24ec5a37a5601fe7ebbb5 GIT binary patch literal 232606 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 J9^DM@{{Tll?1BIQ literal 0 HcmV?d00001 diff --git a/assets/image/pop_background.webp b/assets/image/pop_background.webp new file mode 100644 index 0000000000000000000000000000000000000000..7b403922617ae7334df3006a41636ad803262e94 GIT binary patch literal 32250 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 { //自动播放 looping: false, //循环播放 - allowFullScreen: true, - // 拖动条样式颜色 + allowFullScreen: false, + // 允许的屏幕睡眠 materialProgressColors: chewie.ChewieProgressColors( playedColor: Colors.white, handleColor: Colors.white, backgroundColor: Colors.grey, bufferedColor: Colors.transparent, ), + // 拖动条样式颜色 autoInitialize: true, ); chewieAudioController.addListener(_fullScreenListener); diff --git a/lib/community/community_view/community_dynamic.dart b/lib/community/community_view/community_dynamic.dart index 07a19639..d169762f 100644 --- a/lib/community/community_view/community_dynamic.dart +++ b/lib/community/community_view/community_dynamic.dart @@ -89,7 +89,7 @@ class _CommunityDynamic extends State { //宽高比 autoPlay: false, //自动播放 - looping: false, + looping: true, //循环播放 allowFullScreen: true, // 拖动条样式颜色 diff --git a/lib/integral_store/integral_store_details_page.dart b/lib/integral_store/integral_store_details_page.dart index 3112c1ae..0b16ff30 100644 --- a/lib/integral_store/integral_store_details_page.dart +++ b/lib/integral_store/integral_store_details_page.dart @@ -167,12 +167,13 @@ class _IntegralStoreDetailsPage extends State { }, child: Container( padding: EdgeInsets.only(top: 16.h, bottom: 16.h), + margin: EdgeInsets.only(bottom:25.h,left:20,right: 20), decoration: BoxDecoration( color: (payType > 0) ? Color(0xFF32A060) : Color(0xFFD8D8D8), - borderRadius: BorderRadius.vertical( - top: Radius.circular(4), + borderRadius: BorderRadius.circular( + 45 ), ), alignment: Alignment.center, diff --git a/lib/login/login_page.dart b/lib/login/login_page.dart index dd55456d..f1112d07 100644 --- a/lib/login/login_page.dart +++ b/lib/login/login_page.dart @@ -61,6 +61,7 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { Animation animation; Animation doubleAnimation; bool invitationCode = true; + String areaCode; isLogin() async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); @@ -227,7 +228,7 @@ class _MyLoginPageState extends State with TickerProviderStateMixin { } if (_sendCodeStatus == 0) { client - .sendVerify(mobile) + .sendVerify(areaCode,mobile) .then((value) => { if (value.isSuccess) {_sendCodeStatus = 1, countdown()} diff --git a/lib/login/new_login_page.dart b/lib/login/new_login_page.dart index 5669523d..0ecf5d67 100644 --- a/lib/login/new_login_page.dart +++ b/lib/login/new_login_page.dart @@ -59,6 +59,7 @@ class _NewLoginPage extends State { var checkStatus = false; Timer _timer; bool isShowLogin = false; + String area = "+86"; @override void initState() { @@ -129,19 +130,19 @@ class _NewLoginPage extends State { } if (_sendCodeStatus == 0) { apiService - .sendVerify(mobile) + .sendVerify(area,mobile) .then((value) => { - if (value.isSuccess) - {_sendCodeStatus = 1, countdown()} - else - { - btnText = S.of(context).send_code, - _sendCodeStatus = 0, - SmartDialog.showToast("${value.msg}", - alignment: Alignment.center), - refresh() - } - }) + if (value.isSuccess) + {_sendCodeStatus = 1, countdown()} + else + { + btnText = S.of(context).send_code, + _sendCodeStatus = 0, + SmartDialog.showToast("${value.msg}", + alignment: Alignment.center), + refresh() + } + }) .catchError((error) { SmartDialog.showToast("$error", alignment: Alignment.center); }); @@ -212,43 +213,42 @@ class _NewLoginPage extends State { return; } var invite = _controllerInviteCode.text; - var param = { - "capcha": code, - "mobile": mobile, - "invite":invite - }; + var param = {"capcha": code, "mobile": mobile, "invite": invite}; EasyLoading.show(status: S.of(context).zhengzaijiazai); BaseData value = await apiService.memberLogin(param).catchError((error) { print(error.message); - SmartDialog.showToast(AppUtils.dioErrorTypeToString(error.type), alignment: Alignment.center); + SmartDialog.showToast(AppUtils.dioErrorTypeToString(error.type), + alignment: Alignment.center); }); // EasyLoading.show(status: S.of(context).zhengzaijiazai); - if (value !=null && value.isSuccess) { + if (value != null && value.isSuccess) { var userInfo = LoginInfo.fromJson(value.data); saveUserJson(userInfo.authInfo.toJson()); eventBus.fire(EventType(3)); Navigator.of(context).pushNamedAndRemoveUntil( - '/router/main_page', - (route) => false,arguments:{"invite":invite,"interviewCouponList":userInfo.interviewCouponList, - "firstLoginCouponList":userInfo.firstLoginCouponList}); + '/router/main_page', (route) => false, + arguments: { + "invite": invite, + "interviewCouponList": userInfo.interviewCouponList, + "firstLoginCouponList": userInfo.firstLoginCouponList + }); EasyLoading.dismiss(); - } else { - if(value.msg != null) - SmartDialog.showToast(value?.msg, alignment: Alignment.center); + if (value.msg != null) + SmartDialog.showToast(value?.msg, alignment: Alignment.center); } } saveUserJson(userJson) { var userEntity = UserEntity.fromJson(userJson); SharedPreferences.getInstance().then((value) => { - value.setString('userJson', jsonEncode(userJson)), - value.setString('token', userEntity.token), - value.setString('userId', userEntity.userId), - value.setString('nick', userEntity.name), - value.setString('mobile', userEntity.mobile), - }); + value.setString('userJson', jsonEncode(userJson)), + value.setString('token', userEntity.token), + value.setString('userId', userEntity.userId), + value.setString('nick', userEntity.name), + value.setString('mobile', userEntity.mobile), + }); } isLogin() async { @@ -263,11 +263,12 @@ class _NewLoginPage extends State { sharedPreferences.getString("token") != null && sharedPreferences.getString("token") != "") { Navigator.of(context).popAndPushNamed('/router/main_page'); - } else {initController(); + } else { + initController(); - apiService = ApiService(Dio(), context: context); - isShowLogin = true; - setState(() {}); + apiService = ApiService(Dio(), context: context); + isShowLogin = true; + setState(() {}); } } @@ -279,64 +280,63 @@ class _NewLoginPage extends State { @override Widget build(BuildContext context) { - return Scaffold( - body:GestureDetector( - behavior: HitTestBehavior.translucent, - onTap: (){ - FocusScope.of(context).requestFocus(FocusNode()); - }, - child: AnimatedCrossFade( - firstChild: Container( - color: Colors.white, - child: Image.asset( - "assets/image/ic_splash_bg.webp", - fit: BoxFit.fill, - ), + return Scaffold( + body: GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + FocusScope.of(context).requestFocus(FocusNode()); + }, + child: AnimatedCrossFade( + firstChild: Container( + color: Colors.white, + child: Image.asset( + "assets/image/ic_splash_bg.webp", + fit: BoxFit.fill, ), - layoutBuilder: (widgetFirst, keyFirst, widgetSecond, keySecond) { - return Stack( - clipBehavior: Clip.none, - children: [ - Positioned( - key: keySecond, - left: 0.0, - top: 0.0, - right: 0.0, - bottom: 0.0, - child: widgetSecond, - ), - Positioned( - key: keyFirst, - left: 0.0, - top: 0.0, - right: 0.0, - bottom: 0.0, - child: widgetFirst, - ), - ], - ); - }, - secondChild: substance(), - firstCurve: Curves.easeInQuart, - secondCurve: Curves.easeInQuart, - crossFadeState: - isShowLogin ? CrossFadeState.showSecond : CrossFadeState.showFirst, - duration: Duration(milliseconds: Platform.isIOS ? 1000 : 1000), ), - ) - ); + layoutBuilder: (widgetFirst, keyFirst, widgetSecond, keySecond) { + return Stack( + clipBehavior: Clip.none, + children: [ + Positioned( + key: keySecond, + left: 0.0, + top: 0.0, + right: 0.0, + bottom: 0.0, + child: widgetSecond, + ), + Positioned( + key: keyFirst, + left: 0.0, + top: 0.0, + right: 0.0, + bottom: 0.0, + child: widgetFirst, + ), + ], + ); + }, + secondChild: substance(), + firstCurve: Curves.easeInQuart, + secondCurve: Curves.easeInQuart, + crossFadeState: + isShowLogin ? CrossFadeState.showSecond : CrossFadeState.showFirst, + duration: Duration(milliseconds: Platform.isIOS ? 1000 : 1000), + ), + )); } void refresh() { setState(() {}); } - Widget substance(){ + Widget substance() { return Container( child: Column( children: [ Expanded( - child:SingleChildScrollView( + child: SingleChildScrollView( physics: BouncingScrollPhysics(), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -344,8 +344,11 @@ class _NewLoginPage extends State { children: [ Container( width: double.infinity, - padding: EdgeInsets.only(left: 16.w,top:60.h+ MediaQuery.of(context).padding.top,right: 12.w), - child:Column( + padding: EdgeInsets.only( + left: 16.w, + top: 60.h + MediaQuery.of(context).padding.top, + right: 12.w), + child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -357,7 +360,9 @@ class _NewLoginPage extends State { color: Color(0xFF000000), ), ), - SizedBox(height:20.h,), + SizedBox( + height: 20.h, + ), Text( "欢迎来到一心回乡", style: TextStyle( @@ -366,7 +371,9 @@ class _NewLoginPage extends State { color: Color(0xFF000000), ), ), - SizedBox(height:50.h,), + SizedBox( + height: 50.h, + ), Text( S.of(context).shoujihao, style: TextStyle( @@ -375,46 +382,76 @@ class _NewLoginPage extends State { color: Color(0xFF181818), ), ), - Container( - height:30.h, - width: MediaQuery.of(context).size.width - 80.h, - // margin: EdgeInsets.only(top: 12.h), - child: TextField( - style: TextStyle( - height: 1.h, - fontSize: 16.sp, - color: statusPhoneTextColor, + Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + GestureDetector( + onTap: (){ + Navigator.of(context).pushNamed('/router/phone_address_page').then((value) { + if(value != null) + setState(() { + area = value; + }); + }); + }, + child: Text( + area, + style: TextStyle( + fontWeight: MyFontWeight.regular, + fontSize: 16.sp, + color: Color(0xFF1A1A1A), + ), + )), + Icon( + Icons.keyboard_arrow_right, + size: 18, + color: Color(0xFF1A1A1A), ), - onChanged: (value) { - if (value != null && value.isNotEmpty) { - if (isPhone(value)) { - mobileStatus = 1; - } else { - mobileStatus = 2; - } - } else { - mobileStatus = 0; - } - setState(() {}); - }, - controller: _controllerPhone, - keyboardType: TextInputType.phone, - decoration: InputDecoration( - errorBorder: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - hintText: "", - // contentPadding: EdgeInsets.only(top: 12, bottom: 12, left: 12), - hintStyle: TextStyle( - fontSize: 10.sp, - color: Color(0xFFA29E9E), + Container( + height: 30.h, + width: MediaQuery.of(context).size.width - 100.w, + margin: EdgeInsets.only(bottom: 10.h), + child: TextField( + style: TextStyle( + height: 1.h, + fontSize: 16.sp, + color: statusPhoneTextColor, + ), + onChanged: (value) { + if (value != null && value.isNotEmpty) { + if (isPhone(value)) { + mobileStatus = 1; + } else { + mobileStatus = 2; + } + } else { + mobileStatus = 0; + } + setState(() {}); + }, + controller: _controllerPhone, + keyboardType: TextInputType.phone, + decoration: InputDecoration( + errorBorder: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + hintText: "", + // contentPadding: EdgeInsets.only(top: 12, bottom: 12, left: 12), + hintStyle: TextStyle( + fontSize: 10.sp, + color: Color(0xFFA29E9E), + ), + ), + textInputAction: TextInputAction.next, + inputFormatters: [ + LengthLimitingTextInputFormatter(11) + ], + cursorColor: Colors.grey, + maxLines: 1, ), ), - textInputAction: TextInputAction.next, - inputFormatters: [LengthLimitingTextInputFormatter(11)], - cursorColor: Colors.grey, - maxLines: 1, - ), + ], ), Container( height: 1.h, @@ -422,7 +459,7 @@ class _NewLoginPage extends State { color: statusPhoneLineColor, ), SizedBox( - height:30.h, + height: 30.h, child: Visibility( visible: statusPhoneVisible, child: Text( @@ -443,7 +480,7 @@ class _NewLoginPage extends State { ), ), Container( - height:30.h, + height: 30.h, width: MediaQuery.of(context).size.width - 30.h, child: Row( mainAxisAlignment: MainAxisAlignment.end, @@ -463,7 +500,8 @@ class _NewLoginPage extends State { color: statusCodeTextColor, ), onChanged: (value) { - if (value != null && value.isNotEmpty) { + if (value != null && + value.isNotEmpty) { if (value.length == 6) { verifyStatus = 1; } else { @@ -543,7 +581,9 @@ class _NewLoginPage extends State { ), ), ), - SizedBox(height: 51.h,), + SizedBox( + height: 51.h, + ), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, @@ -556,10 +596,11 @@ class _NewLoginPage extends State { }); }, checkColor: Color(0xFFFFFFFF), - fillColor: MaterialStateProperty.all(Color(0xFF32A060)), + fillColor: + MaterialStateProperty.all(Color(0xFF32A060)), ), - Expanded(child: - Text.rich( + Expanded( + child: Text.rich( TextSpan(children: [ TextSpan( text: S.of(context).privacy_policy1, @@ -573,8 +614,8 @@ class _NewLoginPage extends State { text: "《一心回乡用户协议》", recognizer: TapGestureRecognizer() ..onTap = () { - Navigator.of(context) - .pushNamed('/router/user_service_page'); + Navigator.of(context).pushNamed( + '/router/user_service_page'); }, style: TextStyle( fontSize: 11.sp, @@ -606,18 +647,20 @@ class _NewLoginPage extends State { ), ]), )), - SizedBox(width: 30,) + SizedBox( + width: 30, + ) ], ), GestureDetector( - onTap: (){ + onTap: () { _login(); }, child: Container( - width:double.infinity, + width: double.infinity, height: 57.h, alignment: Alignment.center, - margin: EdgeInsets.only(top: 14.h,bottom:12.h), + margin: EdgeInsets.only(top: 14.h, bottom: 12.h), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: Color(0xFF32A060), @@ -633,16 +676,17 @@ class _NewLoginPage extends State { ), ), GestureDetector( - onTap: (){ + onTap: () { print("11111"); if (widget.arguments != null) { Navigator.of(context).pop(); } else { - Navigator.of(context).popAndPushNamed('/router/main_page'); + Navigator.of(context) + .popAndPushNamed('/router/main_page'); } }, child: Container( - width:double.infinity, + width: double.infinity, height: 57.h, alignment: Alignment.center, decoration: BoxDecoration( @@ -810,7 +854,7 @@ class _NewLoginPage extends State { }); SharesdkPlugin.uploadPrivacyPermissionStatus( 1, - (success) => { + (success) => { Navigator.of(context).pop(), }, ); @@ -843,5 +887,4 @@ class _NewLoginPage extends State { r'^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$'); return exp.hasMatch(mobile); } - } diff --git a/lib/login/phone_address_page.dart b/lib/login/phone_address_page.dart new file mode 100644 index 00000000..29bf8c7e --- /dev/null +++ b/lib/login/phone_address_page.dart @@ -0,0 +1,158 @@ +import 'dart:convert'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:huixiang/generated/l10n.dart'; +import 'package:huixiang/utils/font_weight.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:huixiang/view_widget/classic_header.dart'; +import 'package:huixiang/view_widget/my_footer.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; + +class PhoneAddressPage extends StatefulWidget { + @override + State createState() { + return _PhoneAddressPage(); + } +} + +class _PhoneAddressPage extends State { + RefreshController refreshController = RefreshController(); + Map areaMap; + List areaList = []; + + @override + void initState() { + super.initState(); + areaCode(); + } + + void areaCode() async { + var value = + await rootBundle.loadString('assets/map_style/area_code_full.json'); + areaMap = jsonDecode(value); + areaMap.forEach((key, value) { + areaList.add(key); + }); + setState(() {}); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Color(0xFFF0F0F0), + leading: GestureDetector( + child: Icon( + Icons.arrow_back_ios, + color: Colors.black, + ), + onTap: () { + Navigator.of(context).pop(); + }), + title: Text( + "选择手机号归属地", + style: TextStyle( + fontWeight: MyFontWeight.regular, + fontSize: 17.sp, + color: Color(0xFF0D0D0D), + ), + ), + centerTitle: true, + elevation: 0.0, + ), + body: Container( + color: Color(0xFFF0F0F0), + child: sortList(), + ), + ); + } + + Widget sortList() { + return ListView.builder( + padding: EdgeInsets.zero, + itemCount: areaList.length, + scrollDirection: Axis.vertical, + shrinkWrap: true, + physics: BouncingScrollPhysics(), + itemBuilder: (context, position) { + return GestureDetector( + onTap: () {}, + child: sortItem(position), + ); + }, + ); + } + + Widget sortItem(int position) { + return Column( + children: [ + Container( + width: double.infinity, + color: Colors.white, + padding: EdgeInsets.only(top: 2.h, bottom: 2.h, left: 16.w), + margin: EdgeInsets.only(bottom: 12.h), + child: Text( + areaList[position], + style: TextStyle( + color: Color(0xFF000000), + fontWeight: MyFontWeight.medium, + fontSize: 16.sp, + ), + ), + ), + Column( + children: (areaMap[areaList[position]] as List).map((e) { + return globalRoamingItem(e); + }).toList(), + ) + ], + ); + } + + Widget globalRoamingItem(data) { + return GestureDetector( + child: Container( + margin: EdgeInsets.only(left: 16.w, right: 22.w), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Text( + data["area"], + style: TextStyle( + color: Color(0xFF000000), + fontWeight: MyFontWeight.regular, + fontSize: 14.sp, + ), + ), + ), + Text( + data["area_code"], + style: TextStyle( + color: Color(0xFFA29E9E), + fontWeight: MyFontWeight.regular, + fontSize: 12.sp, + ), + ), + ], + ), + Container( + margin: EdgeInsets.symmetric(vertical: 12.h), + width: double.infinity, + height: 1.h, + color: Color(0xFFDCDCDC), + ) + ], + ), + ), + onTap: () { + Navigator.of(context).pop(data["area_code"]); + }, + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index 028734a4..ff373191 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,7 +5,6 @@ import 'package:event_bus/event_bus.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_bmflocation/bdmap_location_flutter_plugin.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -54,6 +53,8 @@ import 'package:huixiang/setting/logout_ing.dart'; import 'package:huixiang/setting/logout_page.dart'; import 'package:huixiang/setting/permission_setting_page.dart'; import 'package:huixiang/setting/platform_code_page.dart'; +import 'package:huixiang/setting/platform_pay_code.dart'; +import 'package:huixiang/setting/platform_pay_code_success.dart'; import 'package:huixiang/setting/setting_page.dart'; import 'package:huixiang/setting/treaty_page.dart'; import 'package:huixiang/store/report_assess%20.dart'; @@ -71,7 +72,6 @@ import 'package:huixiang/settlement/settlement.dart'; import 'package:huixiang/test_page.dart'; import 'package:huixiang/union/location_map_page.dart'; import 'package:huixiang/utils/ImgCachePath.dart'; -import 'package:huixiang/view_widget/activity_poster.dart'; import 'package:huixiang/web/web_page.dart'; import 'package:huixiang/union/union_details_page.dart'; @@ -80,11 +80,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/web/web_turntable_activity.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:sharesdk_plugin/sharesdk_interface.dart'; -import 'package:sharesdk_plugin/sharesdk_register.dart'; -import 'package:tpns_flutter_plugin/android/xg_android_api.dart'; -import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; -import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'; import 'community/community_view/class_details.dart'; import 'community/headlines/headlines_column_details.dart'; @@ -95,10 +90,10 @@ import 'community/report/report_page.dart'; import 'community/report/report_success.dart'; import 'home/guide_page.dart'; import 'home/home_view/activity_list.dart'; -import 'home/start_page.dart'; import 'home/welfare_exchange.dart'; import 'home/welfare_page.dart'; import 'login/new_login_page.dart'; +import 'login/phone_address_page.dart'; import 'main_page.dart'; import 'message/system_details.dart'; import 'mine/coupon_page.dart'; @@ -108,7 +103,6 @@ import 'mine/manage_address_page.dart'; import 'mine/mine_greenery.dart'; import 'mine/mine_shop_details.dart'; import 'mine/mine_shop_page.dart'; -import 'mine/mine_view/calendar_page.dart'; import 'mine/mine_view/community_follow.dart'; import 'mine/mine_vip/binding_assistant_card.dart'; import 'mine/mine_vip/legal_right_details.dart'; @@ -401,4 +395,10 @@ Map routers = { AccountSecurityPage(), '/router/platform_code_page': (context, {arguments}) => PlatformCodePage(arguments:arguments), + '/router/platform_pay_code': (context, {arguments}) => + PlatformPayCode(arguments:arguments), + '/router/platform_pay_code_success': (context, {arguments}) => + PlatformPayCodeSuccess(arguments:arguments), + '/router/phone_address_page': (context, {arguments}) => + PhoneAddressPage(), }; diff --git a/lib/mine/manage_address_page.dart b/lib/mine/manage_address_page.dart index 18a55a44..f918399e 100644 --- a/lib/mine/manage_address_page.dart +++ b/lib/mine/manage_address_page.dart @@ -97,10 +97,14 @@ class _ManageAddressPage extends State { addAddress(); }, child: Container( - color: Color(0xFF32A060), width: MediaQuery.of(context).size.width, padding: EdgeInsets.all(16), + margin:EdgeInsets.symmetric(horizontal: 16.w,vertical:25.h), alignment: Alignment.center, + decoration: BoxDecoration( + color: Color(0xFF32A060), + borderRadius: BorderRadius.circular(45), + ), child: Text( "新增地址", style: TextStyle( diff --git a/lib/mine/recharge_page.dart b/lib/mine/recharge_page.dart index d5e442c1..5de0b37d 100644 --- a/lib/mine/recharge_page.dart +++ b/lib/mine/recharge_page.dart @@ -43,6 +43,7 @@ class _RechargePage extends State { int selectIndex = 0; UserInfo userInfo; String mBalance = "0"; + dynamic payListen; @override void initState() { @@ -56,19 +57,26 @@ class _RechargePage extends State { queryRechargeList(); queryUserBalance(); }); - weChatResponseEventHandler.listen((event) async { + payListen = weChatResponseEventHandler.listen((event) async { print("payCallback: ${event.errCode}"); if (event.errCode == 0) { queryUserBalance(); SmartDialog.showToast("充值成功", alignment: Alignment.center); } - // else{ - // SmartDialog.showToast("充值失败", alignment: Alignment.center); - // return; - // } + else{ + SmartDialog.showToast("充值失败", alignment: Alignment.center); + return; + } }); } + @override + void dispose() { + super.dispose(); + if(payListen!=null) + payListen.cancel(); + } + ///会员权益列表 queryBenefitList() async { BaseData> baseData = diff --git a/lib/order/exchange_order_page.dart b/lib/order/exchange_order_page.dart index 75f4e5bc..5f17894a 100644 --- a/lib/order/exchange_order_page.dart +++ b/lib/order/exchange_order_page.dart @@ -1,4 +1,6 @@ +import 'dart:async'; import 'dart:convert'; +import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -12,6 +14,7 @@ import 'package:huixiang/retrofit/data/wx_pay.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/utils/flutter_utils.dart'; import 'package:huixiang/utils/font_weight.dart'; +import 'package:huixiang/utils/min.dart'; import 'package:huixiang/view_widget/custom_image.dart'; import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:huixiang/view_widget/receiving_method_dialog.dart'; @@ -34,8 +37,9 @@ class ExchangeOrderPage extends StatefulWidget { class _ExchangeOrderPage extends State { ApiService apiService; int buyNum = 1; - var checkIndex = 1; + var checkIndex = 3; UserInfo userInfo; + dynamic payListen; dynamic mBalance = 0; @override @@ -49,6 +53,34 @@ class _ExchangeOrderPage extends State { UserInfo.fromJson(jsonDecode(value.getString('user'))).points, queryUserBalance(), }); + + payListen = weChatResponseEventHandler.listen((event) async { + print("payCallback: ${event.errCode}"); + if (event.errCode == 0) { + String realPay = handleNeedPay(); + Navigator.of(context).popAndPushNamed( + '/router/exchange_order_success_page', + arguments: { + "id": widget.arguments["goodsId"], + "price": realPay.contains("积分") ? realPay.substring(0,realPay.indexOf("积分")) : "0", + "points": points, + "realPay": realPay, + "payChannel": widget.arguments["payChannel"], + }, + ); + } else { + SmartDialog.showToast("支付失败", alignment: Alignment.center); + return; + } + }); + + } + + @override + void dispose() { + super.dispose(); + if(payListen!=null) + payListen.cancel(); } queryUserBalance() async { @@ -926,14 +958,20 @@ class _ExchangeOrderPage extends State { ], ), ), - SizedBox(height: 40) + SizedBox(height:100.h) ], )), Align( alignment: Alignment.bottomCenter, child: Container( height: 54.h, - color: Colors.white, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular( + 45 + ), + ), + margin: EdgeInsets.only(bottom:20.h,left: 16.w,right: 16.w), child: Row( children: [ Spacer(), @@ -965,21 +1003,29 @@ class _ExchangeOrderPage extends State { if (!storeIsSelected) return; creditOrder(); }, - child: RoundButton( + child: Container( width: 103.w, height: 54.h, - text: widget.arguments["payType"] == 3 || - (widget.arguments["payType"] == 2 && - widget.arguments["money"] != "0.00") + alignment: Alignment.center, + decoration: BoxDecoration( + color: Color(0xFF32A060), + borderRadius: BorderRadius.only( + bottomRight: Radius.circular(45), + topRight: Radius.circular(45), + ), + ), + child: Text( + widget.arguments["payType"] == 3 || + (widget.arguments["payType"] == 2 && + widget.arguments["money"] != "0.00") ? S.current.jiesuan : S.current.duihuan, - textColor: Colors.white, - fontWeight: MyFontWeight.regular, - backgroup: Color(0xFF32A060), - radius: 0, - fontSize: 16.sp, - padding: EdgeInsets.symmetric(vertical: 5.h), - ), + style: TextStyle( + fontSize: 16.sp, + fontWeight: MyFontWeight.regular, + color: Colors.white, + ), + ),), ), ], ), @@ -1111,24 +1157,6 @@ class _ExchangeOrderPage extends State { timeStamp: int.tryParse(wxPay.timeStamp), sign: wxPay.sign, ); - weChatResponseEventHandler.listen((event) async { - print("payCallback: ${event.errCode}"); - if (event.errCode == 0) { - Navigator.of(context).popAndPushNamed( - '/router/exchange_order_success_page', - arguments: { - "id": widget.arguments["goodsId"], - "price": realPay.contains("积分") ? realPay.substring(0,realPay.indexOf("积分")) : "0", - "points": points, - "realPay": realPay, - "payChannel": widget.arguments["payChannel"], - }, - ); - } else { - SmartDialog.showToast("支付失败", alignment: Alignment.center); - return; - } - }); return; } await Navigator.of(context) diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 84bef5f0..fabaf924 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/lib/retrofit/retrofit_api.dart @@ -181,8 +181,8 @@ abstract class ApiService { Future memberLogin(@Body() Map param); ///发送验证码 - @GET("/auth/sendVerify/{mobile}") - Future sendVerify(@Path("mobile") String mobile); + @GET("/auth/sendVerify/{areaCode}/{mobile}") + Future sendVerify(@Path("areaCode") String areaCode, @Path("mobile") String mobile); ///积分商城商品列表 @POST("/creditGoods/list") @@ -536,4 +536,7 @@ abstract class ApiService { @POST("/member/updatePayPwd") Future updatePayPwd(@Body() Map param); + ///验证验证码 + @POST("/member/verifyByUpdatePayPwd") + Future verifyByUpdatePayPwd(@Body() Map param); } diff --git a/lib/retrofit/retrofit_api.g.dart b/lib/retrofit/retrofit_api.g.dart index c5912d65..284605e2 100644 --- a/lib/retrofit/retrofit_api.g.dart +++ b/lib/retrofit/retrofit_api.g.dart @@ -99,13 +99,14 @@ class _ApiService implements ApiService { } @override - Future> sendVerify(mobile) async { + Future> sendVerify(areaCode,mobile) async { ArgumentError.checkNotNull(mobile, 'mobile'); + ArgumentError.checkNotNull(areaCode, 'areaCode'); const _extra = {}; final queryParameters = {}; final _data = {}; final _result = await _dio.request>( - '/auth/sendVerify/$mobile', + '/auth/sendVerify/$areaCode/$mobile', queryParameters: queryParameters, options: RequestOptions( method: 'GET', @@ -2045,4 +2046,26 @@ class _ApiService implements ApiService { ); return value; } + + @override + Future> verifyByUpdatePayPwd(param) async { + ArgumentError.checkNotNull(param, 'param'); + const _extra = {}; + final queryParameters = {}; + final _data = {}; + _data.addAll(param ?? {}); + final _result = await _dio.request>('/member/verifyByUpdatePayPwd', + queryParameters: queryParameters, + options: RequestOptions( + method: 'POST', + headers: {}, + extra: _extra, + baseUrl: baseUrl), + data: _data); + final value = BaseData.fromJson( + _result.data, + (json) => json as dynamic, + ); + return value; + } } diff --git a/lib/setting/help_feedback_page.dart b/lib/setting/help_feedback_page.dart index 62128a1e..07f7b88b 100644 --- a/lib/setting/help_feedback_page.dart +++ b/lib/setting/help_feedback_page.dart @@ -149,12 +149,16 @@ class _HelpFeedbackPage extends State { child: Container( height: 54.h, alignment: Alignment.center, - color: Color(0xFF32A060), + margin:EdgeInsets.symmetric(horizontal: 16.w,vertical:25.h), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(45), + ), child: RoundButton( text: S.of(context).tijiao, backgroup: Color(0xFF32A060), textColor: Colors.white, fontSize: 16.sp, + radius: 45, fontWeight: MyFontWeight.semi_bold, ), ), diff --git a/lib/setting/logout_ing.dart b/lib/setting/logout_ing.dart index 1dc39add..243f784d 100644 --- a/lib/setting/logout_ing.dart +++ b/lib/setting/logout_ing.dart @@ -38,6 +38,7 @@ class _LogoutIng extends State { var _sendCodeStatus = 0; Timer _timer; UserInfo userInfo; + String area = "+86"; @override void initState() { @@ -81,7 +82,7 @@ class _LogoutIng extends State { showLoading: true ); } - BaseData baseData = await apiService.sendVerify(mobile).catchError((onError) {}); + BaseData baseData = await apiService.sendVerify("+86",mobile).catchError((onError) {}); if (baseData != null && baseData.isSuccess) { countdown(); SmartDialog.showToast(baseData.data, @@ -150,7 +151,12 @@ class _LogoutIng extends State { background: Colors.transparent, leadingColor: Colors.black, ), - body: Stack( + body: GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + FocusScope.of(context).requestFocus(FocusNode()); + }, + child: Stack( children: [ Container( width: double.infinity, @@ -199,22 +205,52 @@ class _LogoutIng extends State { ), ), ), - Container( - margin: EdgeInsets.fromLTRB(0.w, 0, 20.w, 0), - alignment: Alignment.topLeft, - child: TextField( - controller: phoneController, - inputFormatters: [LengthLimitingTextInputFormatter(11)], - decoration: InputDecoration( - border: InputBorder.none, - hintText: S.of(context).qingshurushoujihao, - hintStyle: TextStyle( - fontSize: 14.sp, - fontWeight: MyFontWeight.regular, - color: Color(0xffA29E9E), - ), + Row( + children: [ + GestureDetector( + onTap: (){ + Navigator.of(context).pushNamed('/router/phone_address_page').then((value) { + if(value != null) + setState(() { + area = value; + }); + }); + }, + child: Text( + area, + style: TextStyle( + fontWeight: MyFontWeight.regular, + fontSize: 16.sp, + color: Color(0xFF1A1A1A), + ), + )), + Icon( + Icons.keyboard_arrow_right, + size: 18, + color: Color(0xFF1A1A1A), ), - ), + Expanded(child: + Container( + margin: EdgeInsets.fromLTRB(0.w, 0, 20.w, 0), + // alignment: Alignment.topLeft, + height: 30.h, + // width: MediaQuery.of(context).size.width - 100.w, + child: TextField( + controller: phoneController, + keyboardType: TextInputType.phone, + inputFormatters: [LengthLimitingTextInputFormatter(11)], + decoration: InputDecoration( + border: InputBorder.none, + hintText: S.of(context).qingshurushoujihao, + hintStyle: TextStyle( + fontSize: 14.sp, + fontWeight: MyFontWeight.regular, + color: Color(0xffA29E9E), + ), + ), + ), + )), + ], ), Container( height: 1.h, @@ -243,6 +279,7 @@ class _LogoutIng extends State { alignment: Alignment.topLeft, child: TextField( controller: provingController, + keyboardType: TextInputType.phone, inputFormatters: [ LengthLimitingTextInputFormatter(6) ], @@ -310,10 +347,14 @@ class _LogoutIng extends State { width: double.infinity, height: 54.h, alignment: Alignment.center, - color: (phoneController.text == "" && - provingController.text == "") - ? Color(0xFFD8D8D8) - : Color(0xFF32A060), + margin:EdgeInsets.symmetric(horizontal: 16.w,vertical:25.h), + decoration: BoxDecoration( + color: (phoneController.text == "" && + provingController.text == "") + ? Color(0xFFD8D8D8) + : Color(0xFF32A060), + borderRadius: BorderRadius.circular(45), + ), child: Text( S.of(context).querenzhuxiao, style: TextStyle( @@ -324,7 +365,7 @@ class _LogoutIng extends State { )), )) ], - ), + )), ); } diff --git a/lib/setting/logout_page.dart b/lib/setting/logout_page.dart index 00eafdec..e7e3dc94 100644 --- a/lib/setting/logout_page.dart +++ b/lib/setting/logout_page.dart @@ -183,7 +183,11 @@ class _LogoutPage extends State { width: double.infinity, height: 54.h, alignment: Alignment.center, - color: checkStatus ? Color(0xFF32A060) : Color(0xFFD8D8D8), + margin:EdgeInsets.only(left:20.w,right:20.w,bottom: 25.h), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(45), + color: checkStatus ? Color(0xFF32A060) : Color(0xFFD8D8D8), + ), child: Text( "注销", style: TextStyle( diff --git a/lib/setting/platform_code_page.dart b/lib/setting/platform_code_page.dart index a2f92eda..101e9887 100644 --- a/lib/setting/platform_code_page.dart +++ b/lib/setting/platform_code_page.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -15,6 +17,7 @@ import 'package:shared_preferences/shared_preferences.dart'; class PlatformCodePage extends StatefulWidget { final Map arguments; + PlatformCodePage({this.arguments}); @override @@ -27,22 +30,35 @@ class _PlatformCodePage extends State { ApiService apiService; int codeType = 0; UserInfo userInfo; + String inputText = ""; + Timer _timer; + int sendCodeStatus = 0; + var codeText = "重新发送"; @override void initState() { super.initState(); } + @override + void dispose() { + if (_timer != null && _timer.isActive) _timer.cancel(); + super.dispose(); + } + ///发送修改支付密码的短信验证 sendCode() async { if (apiService == null) { SharedPreferences value = await SharedPreferences.getInstance(); apiService = ApiService(Dio(), - context: context, token: value.getString("token"), showLoading: true); + context: context, + token: value.getString("token"), + showLoading: false); } BaseData baseData = await apiService.sendVerifyByUpdatePayPwd().catchError((onError) {}); if (baseData != null && baseData.isSuccess) { + countdown(); codeType = 1; SmartDialog.showToast(baseData.data, alignment: Alignment.center); } else { @@ -50,27 +66,48 @@ class _PlatformCodePage extends State { } } - ///修改支付密码 - modifyPayCode(String payCode,String code) async { + ///验证验证码 + verificationCode(String smsCode) async { if (apiService == null) { - SharedPreferences value = await SharedPreferences.getInstance(); - apiService = ApiService(Dio(), - context: context, token: value.getString("token"), showLoading: true); - } - BaseData baseData = await apiService.updatePayPwd({ - "newPayPwd": payCode, - "smsCode": code, + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService(Dio(), + context: context, token: value.getString("token"), showLoading: false); + } + BaseData baseData = await apiService.verifyByUpdatePayPwd({ + "smsCode": smsCode, }).catchError((error) {}); if (baseData != null && baseData.isSuccess) { - setState(() { - codeType=4; - }); - SmartDialog.showToast(baseData.data, alignment: Alignment.center); + Navigator.of(context).popAndPushNamed( + '/router/platform_pay_code', + arguments: { + "inputText": inputText, + }); + SmartDialog.showToast(baseData.data ?? false, alignment: Alignment.center); } else { SmartDialog.showToast(baseData.msg, alignment: Alignment.center); } } + countdown() { + if (_timer != null && _timer.isActive) return; + int countdown = 60; + _timer = Timer.periodic(Duration(seconds: 1), (timer) { + countdown--; + if (countdown == 0) { + codeText = "重新发送"; + sendCodeStatus = 0; + _timer.cancel(); + } else { + codeText = S.of(context).resend_in_seconds(countdown); + } + refresh(); + }); + } + + void refresh() { + setState(() {}); + } + @override Widget build(BuildContext context) { return GestureDetector( @@ -79,6 +116,7 @@ class _PlatformCodePage extends State { FocusScope.of(context).requestFocus(FocusNode()); }, child: Scaffold( + resizeToAvoidBottomInset: false, appBar: AppBar( backgroundColor: Colors.white, leading: GestureDetector( @@ -102,168 +140,13 @@ class _PlatformCodePage extends State { ), body: Column( children: [ - if(codeType == 0) - verification(), - if(codeType ==1) - verificationIssued(), - if(codeType == 2 || codeType ==3) - settingCode(), - // if(codeType == 3) - // againSettingCode(), - if(codeType == 4) - codeSuccess(), + if (codeType == 0) verification(), + if (codeType == 1) verificationIssued(), ], ), )); } - ///设置密码 - Widget settingCode() { - return Container( - alignment: Alignment.center, - margin: EdgeInsets.only(top: 28.h), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - codeType== 3?"请再次输入6位数字密码":"请输入6位数字密码", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, - color: Color(0xFF353535), - ), - ), - SizedBox( - height: 12.h, - ), - Text( - "将用于一心回乡APP下单时平台余额消费", - style: TextStyle( - fontWeight: MyFontWeight.medium, - fontSize: 14.sp, - color: Color(0xFFA29E9E), - ), - ), - Container( - margin: EdgeInsets.only(top: 24.h, bottom: 31.h), - padding: EdgeInsets.only(left: 48.w, right: 48.w), - height: 45.h, - child: PinInputTextField( - decoration: BoxLooseDecoration( - strokeColorBuilder: FixedColorBuilder(Color(0xFFEBEAEA)), - textStyle: TextStyle( - fontWeight: MyFontWeight.medium, - fontSize: 18.sp, - color: Color(0xFF353535), - ), - radius: Radius.circular(4.r)), - ), - ), - GestureDetector( - onTap: (){ - setState(() { - codeType = 3; - if(codeType == 3) - modifyPayCode("123656", "5394"); - }); - }, - child: Container( - width: 163.w, - height: 46.h, - alignment: Alignment.center, - decoration: BoxDecoration( - color: Color(0xFFBBE7CC), - borderRadius: BorderRadius.circular(23.r), - ), - child: Text( - codeType== 3?"确认":"下一步", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, - color: Color(0xFFFFFFFF), - ), - ), - ), - ) - ], - ), - ); - } - - ///再次输入密码 - Widget againSettingCode() { - return Container( - alignment: Alignment.center, - margin: EdgeInsets.only(top: 28.h), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - "请再次输入6位数字密码", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, - color: Color(0xFF353535), - ), - ), - SizedBox( - height: 12.h, - ), - Text( - "将用于一心回乡APP下单时平台余额消费", - style: TextStyle( - fontWeight: MyFontWeight.medium, - fontSize: 14.sp, - color: Color(0xFFA29E9E), - ), - ), - Container( - margin: EdgeInsets.only(top: 24.h, bottom: 31.h), - padding: EdgeInsets.only(left: 48.w, right: 48.w), - height: 45.h, - child: PinInputTextField( - decoration: BoxLooseDecoration( - strokeColorBuilder: FixedColorBuilder(Color(0xFFEBEAEA)), - textStyle: TextStyle( - fontWeight: MyFontWeight.medium, - fontSize: 18.sp, - color: Color(0xFF353535), - ), - radius: Radius.circular(4.r)), - keyboardType: TextInputType.text, - ), - ), - GestureDetector( - onTap: (){ - setState(() { - codeType = 4; - }); - }, - child: Container( - width: 163.w, - height: 46.h, - alignment: Alignment.center, - decoration: BoxDecoration( - color: Color(0xFFBBE7CC), - borderRadius: BorderRadius.circular(23.r), - ), - child: Text( - "确认", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, - color: Color(0xFFFFFFFF), - ), - ), - ), - ) - ], - ), - ); - } - ///忘记密码-验证 Widget verification() { return Container( @@ -296,7 +179,7 @@ class _PlatformCodePage extends State { height: 14.h, ), Text( - AppUtils.phoneEncode(widget.arguments["userInfo"]?.phone ?? ""), + AppUtils.phoneEncode(widget.arguments["userInfo"]?.phone ?? ""), style: TextStyle( fontWeight: MyFontWeight.medium, fontSize: 14.sp, @@ -305,9 +188,8 @@ class _PlatformCodePage extends State { ), GestureDetector( onTap: () { - // sendCode(); setState(() { - codeType = 1; + sendCode(); }); }, child: Container( @@ -344,7 +226,7 @@ class _PlatformCodePage extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( - "验证码已发至 176****998", + "验证码已发至 ${AppUtils.phoneEncode(widget.arguments["userInfo"]?.phone ?? "")}", style: TextStyle( fontWeight: MyFontWeight.semi_bold, fontSize: 18.sp, @@ -354,23 +236,34 @@ class _PlatformCodePage extends State { SizedBox( height: 14.h, ), - Text( - "55S后可重发", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 14.sp, - color: Color(0xFFA29E9E), + GestureDetector( + onTap: () { + sendCode(); + }, + child: Text( + codeText, + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 14.sp, + color: Color(0xFF32A060), + ), ), ), SizedBox( height: 14.h, ), Container( - margin: EdgeInsets.only(top: 24.h, bottom: 31.h), - padding: EdgeInsets.only(left: 48.w, right: 48.w), + margin: EdgeInsets.only(top: 24.h, bottom: 31.h,right: 48.w,left: 48.w), + // padding: EdgeInsets.only(left: 48.w, right: 48.w), height: 55.h, child: PinInputTextField( pinLength: 4, + onChanged: (txt) { + print(txt); + setState(() { + inputText = txt; + }); + }, decoration: BoxLooseDecoration( strokeColorBuilder: FixedColorBuilder(Color(0xFFEBEAEA)), textStyle: TextStyle( @@ -385,7 +278,12 @@ class _PlatformCodePage extends State { GestureDetector( onTap: () { setState(() { - codeType = 2; + if (inputText.length == 4) { + verificationCode(inputText); + } else { + SmartDialog.showToast("请输入验证码", + alignment: Alignment.center); + } }); }, child: Container( @@ -393,7 +291,9 @@ class _PlatformCodePage extends State { height: 46.h, alignment: Alignment.center, decoration: BoxDecoration( - color: Color(0xFFBBE7CC), + color: inputText.length == 4 + ? Color(0xFF32A060) + : Color(0xFFBBE7CC), borderRadius: BorderRadius.circular(23.r), ), child: Text( @@ -409,73 +309,4 @@ class _PlatformCodePage extends State { ), ); } - - ///设置密码成功状态 - Widget codeSuccess() { - return Container( - alignment: Alignment.center, - margin: EdgeInsets.only(top: 31.h), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - "assets/image/icon_order_success.webp", - fit: BoxFit.cover, - width: 76, - height: 76, - ), - SizedBox( - height: 16.h, - ), - Text( - "设置密码成功", - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 21.sp, - color: Color(0xFF353535), - ), - ), - SizedBox( - height: 69.h, - ), - GestureDetector( - onTap: () { - Navigator.of(context).pop(); - }, - child: Container( - width: double.infinity, - height: 46.h, - alignment: Alignment.center, - decoration: BoxDecoration( - color: Color(0xFF32A060), - borderRadius: BorderRadius.circular(4.r), - ), - margin: EdgeInsets.symmetric(horizontal: 16.w), - child: Text( - S.of(context).queren, - style: TextStyle( - fontWeight: MyFontWeight.semi_bold, - fontSize: 18.sp, - color: Color(0xFFFFFFFF), - ), - ), - ), - ) - ], - ), - ); - } - - ///平台支付密码弹窗 - assessShowBottomSheet() { - showModalBottomSheet( - context: context, - backgroundColor: Colors.transparent, - isScrollControlled: true, - builder: (context) { - return PaySelectedDialog(); - }, - ); - } } diff --git a/lib/setting/platform_pay_code.dart b/lib/setting/platform_pay_code.dart new file mode 100644 index 00000000..ab3ce56b --- /dev/null +++ b/lib/setting/platform_pay_code.dart @@ -0,0 +1,156 @@ +import 'package:dio/dio.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:huixiang/generated/l10n.dart'; +import 'package:huixiang/retrofit/data/base_data.dart'; +import 'package:huixiang/retrofit/data/user_info.dart'; +import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; +import 'package:huixiang/utils/font_weight.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:huixiang/view_widget/pay_selected_dialog.dart'; +import 'package:pin_input_text_field/pin_input_text_field.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class PlatformPayCode extends StatefulWidget { + final Map arguments; + PlatformPayCode({this.arguments}); + + @override + State createState() { + return _PlatformPayCode(); + } +} + +class _PlatformPayCode extends State { + String inputCode = ""; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + FocusScope.of(context).requestFocus(FocusNode()); + }, + child: Scaffold( + appBar: AppBar( + backgroundColor: Colors.white, + leading: GestureDetector( + child: Icon( + Icons.arrow_back_ios, + color: Colors.black, + ), + onTap: () { + Navigator.of(context).pop(); + }), + title: Text( + S.of(context).pingtaizhifumima, + style: TextStyle( + fontWeight: MyFontWeight.regular, + fontSize: 17.sp, + color: Color(0xFF0D0D0D), + ), + ), + centerTitle: true, + elevation: 0.0, + ), + body: Column( + children: [ + settingCode(), + ], + ), + )); + } + + ///设置密码 + Widget settingCode(){ + return Container( + alignment: Alignment.center, + margin: EdgeInsets.only(top: 28.h), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "请输入6位数字密码", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 18.sp, + color: Color(0xFF353535), + ), + ), + SizedBox( + height: 12.h, + ), + Text( + "将用于一心回乡APP下单时平台余额消费", + style: TextStyle( + fontWeight: MyFontWeight.medium, + fontSize: 14.sp, + color: Color(0xFFA29E9E), + ), + ), + Container( + margin: EdgeInsets.only(top: 24.h, bottom: 31.h), + padding: EdgeInsets.only(left: 48.w, right: 48.w), + height: 45.h, + child: PinInputTextField( + onChanged: (txtCode){ + print(txtCode); + setState(() { + inputCode = txtCode; + }); + }, + decoration: BoxLooseDecoration( + strokeColorBuilder: FixedColorBuilder(Color(0xFFEBEAEA)), + textStyle: TextStyle( + fontWeight: MyFontWeight.medium, + fontSize: 18.sp, + color: Color(0xFF353535), + ), + radius: Radius.circular(4.r)), + ), + ), + GestureDetector( + onTap: (){ + setState(() { + if(inputCode.length == 6){ + Navigator.of(context).popAndPushNamed('/router/platform_pay_code_success',arguments:{ + "inputCode":inputCode, + "inputText":widget.arguments["inputText"] + }); + }else{ + SmartDialog.showToast("请输入6位数字密码", alignment: Alignment.center); + } + }); + }, + child: Container( + width: 163.w, + height: 46.h, + alignment: Alignment.center, + decoration: BoxDecoration( + color: inputCode.length == 6 ? Color(0xFF32A060):Color(0xFFBBE7CC), + borderRadius: BorderRadius.circular(23.r), + ), + child: Text( + "下一步", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 18.sp, + color: Color(0xFFFFFFFF), + ), + ), + ), + ) + ], + ), + ); + } + +} diff --git a/lib/setting/platform_pay_code_success.dart b/lib/setting/platform_pay_code_success.dart new file mode 100644 index 00000000..df75d7f4 --- /dev/null +++ b/lib/setting/platform_pay_code_success.dart @@ -0,0 +1,255 @@ +import 'package:dio/dio.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:huixiang/generated/l10n.dart'; +import 'package:huixiang/retrofit/data/base_data.dart'; +import 'package:huixiang/retrofit/data/user_info.dart'; +import 'package:huixiang/retrofit/retrofit_api.dart'; +import 'package:huixiang/utils/flutter_utils.dart'; +import 'package:huixiang/utils/font_weight.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:huixiang/view_widget/pay_selected_dialog.dart'; +import 'package:pin_input_text_field/pin_input_text_field.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class PlatformPayCodeSuccess extends StatefulWidget { + final Map arguments; + PlatformPayCodeSuccess({this.arguments}); + + @override + State createState() { + return _PlatformPayCodeSuccess(); + } +} + +class _PlatformPayCodeSuccess extends State { + ApiService apiService; + int codeType = 0; + UserInfo userInfo; + String againInputCode = ""; + + @override + void initState() { + super.initState(); + } + + ///修改支付密码 + modifyPayCode(String payCode,String code) async { + if (apiService == null) { + SharedPreferences value = await SharedPreferences.getInstance(); + apiService = ApiService(Dio(), + context: context, token: value.getString("token"), showLoading: false); + } + BaseData baseData = await apiService.updatePayPwd({ + "newPayPwd": payCode, + "smsCode": code, + }).catchError((error) {}); + if (baseData != null && baseData.isSuccess) { + setState(() { + codeType=4; + }); + SmartDialog.showToast(baseData.data ?? false, alignment: Alignment.center); + } else { + setState(() { + codeType = 5; + }); + SmartDialog.showToast(baseData.msg, alignment: Alignment.center); + } + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + FocusScope.of(context).requestFocus(FocusNode()); + }, + child: Scaffold( + appBar: AppBar( + backgroundColor: Colors.white, + leading: GestureDetector( + child: Icon( + Icons.arrow_back_ios, + color: Colors.black, + ), + onTap: () { + Navigator.of(context).pop(); + }), + title: Text( + S.of(context).pingtaizhifumima, + style: TextStyle( + fontWeight: MyFontWeight.regular, + fontSize: 17.sp, + color: Color(0xFF0D0D0D), + ), + ), + centerTitle: true, + elevation: 0.0, + ), + body: Column( + children: [ + if(codeType!=4 && codeType != 5) + againSettingCode(), + if(codeType == 4 || codeType == 5) + codeSuccess(), + ], + ), + )); + } + + ///再次输入密码 + Widget againSettingCode() { + return Container( + alignment: Alignment.center, + margin: EdgeInsets.only(top: 28.h), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "请再次输入6位数字密码", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 18.sp, + color: Color(0xFF353535), + ), + ), + SizedBox( + height: 12.h, + ), + Text( + "将用于一心回乡APP下单时平台余额消费", + style: TextStyle( + fontWeight: MyFontWeight.medium, + fontSize: 14.sp, + color: Color(0xFFA29E9E), + ), + ), + Container( + margin: EdgeInsets.only(top: 24.h, bottom: 31.h), + padding: EdgeInsets.only(left: 48.w, right: 48.w), + height: 45.h, + child: PinInputTextField( + onChanged: (txtCode){ + print(txtCode); + setState(() { + againInputCode = txtCode; + }); + }, + decoration: BoxLooseDecoration( + strokeColorBuilder: FixedColorBuilder(Color(0xFFEBEAEA)), + textStyle: TextStyle( + fontWeight: MyFontWeight.medium, + fontSize: 18.sp, + color: Color(0xFF353535), + ), + radius: Radius.circular(4.r)), + ), + ), + GestureDetector( + onTap: (){ + setState(() { + if(againInputCode.length == 6 && (widget.arguments["inputCode"] == againInputCode)){ + modifyPayCode(againInputCode,widget.arguments["inputText"]); + }else{ + if(widget.arguments["inputCode"] != againInputCode){ + SmartDialog.showToast("请输入与上次一致的6位数字密码", alignment: Alignment.center); + }else{ + SmartDialog.showToast("请再次输入6位数字密码", alignment: Alignment.center); + } + } + }); + }, + child: Container( + width: 163.w, + height: 46.h, + alignment: Alignment.center, + decoration: BoxDecoration( + color: againInputCode.length == 6 ? Color(0xFF32A060):Color(0xFFBBE7CC), + borderRadius: BorderRadius.circular(23.r), + ), + child: Text( + "确认", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 18.sp, + color: Color(0xFFFFFFFF), + ), + ), + ), + ) + ], + ), + ); + } + + ///设置密码成功状态 + Widget codeSuccess() { + return Container( + alignment: Alignment.center, + margin: EdgeInsets.only(top: 31.h), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.asset( + codeType == 5 ? "assets/image/lose.webp":"assets/image/icon_order_success.webp", + fit: BoxFit.cover, + width: 76, + height: 76, + ), + SizedBox( + height: 16.h, + ), + Text( + codeType == 5 ? "设置密码失败":"设置密码成功", + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 21.sp, + color: Color(0xFF353535), + ), + ), + SizedBox( + height: 69.h, + ), + GestureDetector( + onTap: () { + Navigator.of(context).pop(); + }, + child: Container( + width: double.infinity, + height: 46.h, + alignment: Alignment.center, + decoration: BoxDecoration( + color: Color(0xFF32A060), + borderRadius: BorderRadius.circular(4.r), + ), + margin: EdgeInsets.symmetric(horizontal: 16.w), + child: Text( + S.of(context).queren, + style: TextStyle( + fontWeight: MyFontWeight.semi_bold, + fontSize: 18.sp, + color: Color(0xFFFFFFFF), + ), + ), + ), + ) + ], + ), + ); + } + + ///平台支付密码弹窗 + assessShowBottomSheet() { + showModalBottomSheet( + context: context, + backgroundColor: Colors.transparent, + isScrollControlled: true, + builder: (context) { + return PaySelectedDialog(); + }, + ); + } +} diff --git a/lib/setting/setting_page.dart b/lib/setting/setting_page.dart index 68a308bf..9c411e4d 100644 --- a/lib/setting/setting_page.dart +++ b/lib/setting/setting_page.dart @@ -47,6 +47,7 @@ class _SettingPage extends State { @override Widget build(BuildContext context) { return Scaffold( + resizeToAvoidBottomInset: false, appBar: AppBar( backgroundColor: Colors.white, leading: GestureDetector( @@ -97,12 +98,12 @@ class _SettingPage extends State { SizedBox( height: 16.h, ), - // GestureDetector( - // child: settingSingleItem(S.of(context).zhanghaoyuanquan), - // onTap: () { - // Navigator.of(context).pushNamed('/router/account_security_page'); - // }, - // ), + GestureDetector( + child: settingSingleItem(S.of(context).zhanghaoyuanquan), + onTap: () { + Navigator.of(context).pushNamed('/router/account_security_page'); + }, + ), SizedBox( height: 16.h, ), @@ -199,12 +200,16 @@ class _SettingPage extends State { child: Container( height: 54.h, alignment: Alignment.center, - color: Color(0xFF32A060), + margin:EdgeInsets.symmetric(horizontal: 16.w,vertical:25.h), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(45), + ), child: RoundButton( text: S.of(context).tuichudenglu, backgroup: Color(0xFF32A060), textColor: Colors.white, fontSize: 16.sp, + radius:45, fontWeight: MyFontWeight.semi_bold, ), ), diff --git a/lib/store/shop__details_page.dart b/lib/store/shop__details_page.dart index 6c86b6c4..9120e6c5 100644 --- a/lib/store/shop__details_page.dart +++ b/lib/store/shop__details_page.dart @@ -702,6 +702,7 @@ class _ShopDetailsPage extends State { ), ], ), + SizedBox(height: 30.h,) ], ), ), diff --git a/lib/store/store_order.dart b/lib/store/store_order.dart index 5da2e79d..0f7a4f8c 100644 --- a/lib/store/store_order.dart +++ b/lib/store/store_order.dart @@ -207,7 +207,17 @@ class _StoreOrderPage extends State @override Widget build(BuildContext context) { - return Container( + return WillPopScope( + onWillPop: () async { + if (dialogShowing) { + debugPrint("ssssasdadsasdadasd"); + SmartDialog.dismiss(); + return false; + } else { + return true; + } + }, + child:Container( color: Colors.white, child: Stack( children: [ @@ -540,7 +550,7 @@ class _StoreOrderPage extends State ), ), ], - )); + ))); } ///领取优惠券 diff --git a/lib/view_widget/receive_success.dart b/lib/view_widget/receive_success.dart index e35269f2..58667012 100644 --- a/lib/view_widget/receive_success.dart +++ b/lib/view_widget/receive_success.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:huixiang/generated/l10n.dart'; +import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/view_widget/round_button.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; - class ReceiveSuccess extends StatelessWidget { @override Widget build(BuildContext context) { @@ -22,17 +22,28 @@ class ReceiveSuccess extends StatelessWidget { margin: EdgeInsets.only(top: 40.h), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(8),), - width: 218.w, - height: 250.h, + borderRadius: BorderRadius.circular(8), + image: DecorationImage( + fit: BoxFit.fill, + image: AssetImage("assets/image/pop_background.webp"), + ), + ), + width: 269.w, + height: 300.h, + padding: EdgeInsets.only(bottom: 13.h), child: Column( children: [ + SizedBox(height: 8.h,), + Image.asset( + "assets/image/icon_order_success.webp", + fit: BoxFit.cover, + width: 56, + height: 56, + ), Padding( - padding: EdgeInsets.only(top: 50.h, bottom: 19.h), + padding: EdgeInsets.only(top:7.h, bottom: 19.h), child: Text( - S - .of(context) - .lingquchenggong, + S.of(context).lingquchenggong, style: TextStyle( color: Color(0xff353535), fontSize: 16.sp, @@ -47,6 +58,7 @@ class ReceiveSuccess extends StatelessWidget { fontSize: 14.sp, ), ), + SizedBox(height:8.h,), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -59,9 +71,7 @@ class ReceiveSuccess extends StatelessWidget { ), GestureDetector( child: Text( - "${S - .of(context) - .youhuiquan}", + "${S.of(context).youhuiquan}", style: TextStyle( color: Color(0xFFFF7A1A), fontSize: 14.sp, @@ -69,13 +79,12 @@ class ReceiveSuccess extends StatelessWidget { ), ), onTap: () { - Navigator.of(context).pushNamed('/router/coupon_page'); + Navigator.of(context) + .pushNamed('/router/coupon_page'); }, ), Text( - S - .of(context) - .zhongchakan, + S.of(context).zhongchakan, style: TextStyle( color: Color(0xff353535), fontSize: 14.sp, @@ -83,42 +92,32 @@ class ReceiveSuccess extends StatelessWidget { ), ], ), - Padding( - padding: EdgeInsets.only(top: 30.h), - child: RoundButton( - width: 130.w, - height: 34.h, - text: S - .of(context) - .queren, - textColor: Colors.white, - fontSize: 12.sp, - callback: () { - Navigator.of(context).pop(); - }, - padding: EdgeInsets.only( - top: 2.h, - bottom: 2.h, - left: 8.w, - right: 8.w, - ), - backgroup: Color(0xff32A060), - ), - ) + Spacer(), + RoundButton( + width: 229.w, + height: 34.h, + text: S.of(context).queren, + textColor: Color(0xFF188451), + fontWeight: MyFontWeight.medium, + fontSize: 16.sp, + radius: 17.w, + callback: () { + Navigator.of(context).pop(); + }, + backgroup: Color(0xFFFFFFFF), + ), ], ), ), - Image.asset( - "assets/image/icon_order_success.webp", - fit: BoxFit.cover, - width: 80, - height: 80, - ), + // Image.asset( + // "assets/image/icon_order_success.webp", + // fit: BoxFit.cover, + // width: 80, + // height: 80, + // ), ], ) ], ); } - - -} \ No newline at end of file +} diff --git a/lib/view_widget/sign_in_widget.dart b/lib/view_widget/sign_in_widget.dart index a8747388..62bf4eb0 100644 --- a/lib/view_widget/sign_in_widget.dart +++ b/lib/view_widget/sign_in_widget.dart @@ -24,8 +24,8 @@ class _SignInWidget extends State { @override Widget build(BuildContext context) { return Container( - width: 222.w, - height:320.h * AppUtils.textScale(context), + width: 269.w, + height:370.h * AppUtils.textScale(context), child: Stack( children: [ Positioned( @@ -39,12 +39,16 @@ class _SignInWidget extends State { decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(8.w), + image: DecorationImage( + fit: BoxFit.fill, + image: AssetImage("assets/image/pop_background.webp"), + ), ), - padding: EdgeInsets.only(top:20.h), + // padding: EdgeInsets.only(top:8.h), child: Container( - padding: EdgeInsets.symmetric(vertical: 10.h), + padding: EdgeInsets.symmetric(vertical: 13.h), child: Column( - mainAxisAlignment: MainAxisAlignment.spaceAround, + mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ Image.asset( @@ -52,61 +56,41 @@ class _SignInWidget extends State { width: 80, height: 80, ), - Text( + Padding(padding:EdgeInsets.only(top:8.h,bottom:12.h), + child: Text( S.of(context).qiandaowancheng, style: TextStyle( color: Color(0xFF353535), fontSize: 16.sp, fontWeight: MyFontWeight.medium, ), - ), - Text( - S.of(context).ninyilianxuqiandaotian(widget.day), + ),), + Padding(padding:EdgeInsets.only(bottom:12.h), + child: Text( + S.of(context).ninyilianxuqiandaotian(widget.day), + style: TextStyle( + color: Color(0xFF353535), + fontSize: 14.sp, + fontWeight: MyFontWeight.regular, + ), + ),), + Expanded(child: Text( + S.of(context).jiajifen(widget.integral), style: TextStyle( - color: Color(0xFF353535), - fontSize: 14.sp, - fontWeight: MyFontWeight.regular, + color: Color(0xFFFF7A1A), + fontSize: 15.sp, + fontWeight: MyFontWeight.semi_bold, ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - "assets/image/icon_gold_coin.webp", - width: 16, - height: 16, - ), - SizedBox( - width: 4.h, - ), - Text( - S.of(context).jiajifen(widget.integral), - style: TextStyle( - color: Color(0xFFEE9905), - fontSize: 14.sp, - fontWeight: MyFontWeight.semi_bold, - ), - ), - ], - ), - // Text( - // S.of(context).jiajifen(widget.integral), - // style: TextStyle( - // color: Color(0xFFFF7A1A), - // fontSize: 14.sp, - // fontWeight: MyFontWeight.semi_bold, - // ), - // ), + )), RoundButton( text: S.of(context).queren, - textColor: Colors.white, - width: 130.w, - padding: EdgeInsets.symmetric(vertical: 6.h), + textColor: Color(0xFF188451), + width:220.w, + padding: EdgeInsets.symmetric(vertical:8.h), fontSize: 16.sp, fontWeight: MyFontWeight.semi_bold, - backgroup: Color(0xFF32A060), - radius: 4.w, + backgroup: Color(0xFFFFFFFF), + radius: 17.w, callback: () { SmartDialog.dismiss(); }, diff --git a/pubspec.yaml b/pubspec.yaml index 5f383d3b..e29f45e9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: 一心回乡. publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 2.0.25+13 +version: 2.0.26+14 environment: sdk: ">=2.7.0 <3.0.0" From a600d0af5be348066dea16153bfe21f6fb418bc1 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Wed, 29 Jun 2022 11:05:13 +0800 Subject: [PATCH 2/4] + --- assets/image/lose.webp | Bin 0 -> 1220 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/image/lose.webp diff --git a/assets/image/lose.webp b/assets/image/lose.webp new file mode 100644 index 0000000000000000000000000000000000000000..0a94916f1546b0f09d8166fba3096ece199df706 GIT binary patch literal 1220 zcmWIYbaUIo!oU#j>J$(bU=hK^z`$St#NJ@!>FgXJ!35+oFiC(&7NAsaUP)1qyOTmh zWRwC(34~0|Rd)1B37d1_rKZm_reI5pjXTuL?jtGC+Uk z17SKt4nrz~0)r<*9z!yN9*|`OOeBU3X22BVQwvNV`rZeG1nM6eOj6l8Q_%Ry{C1_} zX>U{{OeQT^@%!DpoBR92kDXaCQN{Ic`S&ybYWEnWxlL5j757?z9G;-{5sQ9;k#mArjBY7Rzm?j*O zSb0c-Rk0&zQP*Z40jAJN&qK7X{=c*+pnR?ZOQ6@MRg0KZ7;`RrNIgrvU}XH||M}T# z)769aRCK+tcV_ij!_#_C*Q)dvCoE)ubcy=s+DR%W|NdOU4HtE=HM*7B?CiY%OXQ=*q}OYl&Q9hRzA&S zlkQv_4o>3PHS@yUltU@=IK4Y(aC(Ug{L8Do%Q2LIeUp4BHkQTgSfh$=hvS@9Z9hUCWwZVkI|MC;Nn` z Date: Wed, 29 Jun 2022 11:58:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/new_login_page.dart | 40 ++++++++++++++++--------------- lib/login/phone_address_page.dart | 3 --- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/lib/login/new_login_page.dart b/lib/login/new_login_page.dart index 0ecf5d67..2c1ee4c6 100644 --- a/lib/login/new_login_page.dart +++ b/lib/login/new_login_page.dart @@ -192,12 +192,12 @@ class _NewLoginPage extends State { setState(() {}); return; } - if (mobile.length != 11) { - mobileStatus = 2; - mobileErrorText = S.of(context).phone_error; - setState(() {}); - return; - } + // if (mobile.length != 11) { + // mobileStatus = 2; + // mobileErrorText = S.of(context).phone_error; + // setState(() {}); + // return; + // } var code = _controllerCode.text; if (code == "") { @@ -213,7 +213,7 @@ class _NewLoginPage extends State { return; } var invite = _controllerInviteCode.text; - var param = {"capcha": code, "mobile": mobile, "invite": invite}; + var param = {"capcha": code, "mobile": mobile, "invite": invite,"areaCode":area}; EasyLoading.show(status: S.of(context).zhengzaijiazai); BaseData value = await apiService.memberLogin(param).catchError((error) { print(error.message); @@ -416,7 +416,8 @@ class _NewLoginPage extends State { style: TextStyle( height: 1.h, fontSize: 16.sp, - color: statusPhoneTextColor, + // color: statusPhoneTextColor, + color: Color(0xFF353535), ), onChanged: (value) { if (value != null && value.isNotEmpty) { @@ -456,20 +457,21 @@ class _NewLoginPage extends State { Container( height: 1.h, width: MediaQuery.of(context).size.width - 80.h, - color: statusPhoneLineColor, + // color: statusPhoneLineColor, + color: _controllerPhone.text== "" ? Color(0xFFE7E3E3):Color(0xFF32A060), ), SizedBox( height: 30.h, - child: Visibility( - visible: statusPhoneVisible, - child: Text( - S.of(context).phone_error, - style: TextStyle( - color: Color(0xFFF72626), - fontSize: 12.sp, - ), - ), - ), + // child: Visibility( + // visible: statusPhoneVisible, + // child: Text( + // S.of(context).phone_error, + // style: TextStyle( + // color: Color(0xFFF72626), + // fontSize: 12.sp, + // ), + // ), + // ), ), Text( S.of(context).yanzhengma, diff --git a/lib/login/phone_address_page.dart b/lib/login/phone_address_page.dart index 29bf8c7e..cd7e50ad 100644 --- a/lib/login/phone_address_page.dart +++ b/lib/login/phone_address_page.dart @@ -3,11 +3,8 @@ import 'dart:convert'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/utils/font_weight.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:huixiang/view_widget/classic_header.dart'; -import 'package:huixiang/view_widget/my_footer.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; class PhoneAddressPage extends StatefulWidget { From 210adf67ee1f5184022822675c12ddb6459f2cb7 Mon Sep 17 00:00:00 2001 From: w-R <953969641@qq.com> Date: Wed, 29 Jun 2022 13:41:00 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/{map_style => area_code}/area_code_full.json | 0 lib/login/phone_address_page.dart | 2 +- pubspec.yaml | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) rename assets/{map_style => area_code}/area_code_full.json (100%) diff --git a/assets/map_style/area_code_full.json b/assets/area_code/area_code_full.json similarity index 100% rename from assets/map_style/area_code_full.json rename to assets/area_code/area_code_full.json diff --git a/lib/login/phone_address_page.dart b/lib/login/phone_address_page.dart index cd7e50ad..b7529de7 100644 --- a/lib/login/phone_address_page.dart +++ b/lib/login/phone_address_page.dart @@ -27,7 +27,7 @@ class _PhoneAddressPage extends State { void areaCode() async { var value = - await rootBundle.loadString('assets/map_style/area_code_full.json'); + await rootBundle.loadString('assets/area_code/area_code_full.json'); areaMap = jsonDecode(value); areaMap.forEach((key, value) { areaList.add(key); diff --git a/pubspec.yaml b/pubspec.yaml index e29f45e9..b6225673 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -111,6 +111,7 @@ flutter: - assets/image/2x/ - assets/image/3x/ - assets/map_style/ + - asstes/area_code/ - assets/riv/ - assets/svg/ # - assets/fonts/