From b5dfd10baaf0cb3861c9f7b53745176bb2a550a1 Mon Sep 17 00:00:00 2001 From: liyi Date: Sun, 28 Sep 2025 09:31:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=97=B6=E5=9B=BD=E5=A4=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BD=BF=E7=94=A8=E9=82=AE=E7=AE=B1=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E7=BB=99=E5=87=BA=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/login/starLock_login_page.dart | 480 ++++++++---------- .../register/starLock_register_logic.dart | 5 +- .../register/starLock_register_page.dart | 75 +-- 3 files changed, 260 insertions(+), 300 deletions(-) diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart index 476c7075..19306279 100755 --- a/lib/login/login/starLock_login_page.dart +++ b/lib/login/login/starLock_login_page.dart @@ -45,272 +45,229 @@ class _StarLockLoginPageState extends State { @override Widget build(BuildContext context) { return Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: const Color(0xFFFFFFFF), - appBar: TitleAppBar( - barTitle: '登录'.tr, - haveBack: false, - backgroundColor: AppColors.mainColor, - actionsList: [ - if (state.isChina == true) - IconButton( - onPressed: () { - WechatManageTool.getAppInfo( - CustomerTool.openCustomerService); + resizeToAvoidBottomInset: false, + backgroundColor: const Color(0xFFFFFFFF), + appBar: TitleAppBar( + barTitle: '登录'.tr, + haveBack: false, + backgroundColor: AppColors.mainColor, + actionsList: [ + if (state.isChina == true) + IconButton( + onPressed: () { + WechatManageTool.getAppInfo(CustomerTool.openCustomerService); + }, + icon: const Icon( + Icons.support_agent, + color: Colors.white, + )), + TextButton( + child: Text( + '注册'.tr, + style: TextStyle(color: Colors.white, fontSize: 24.sp), + ), + onPressed: () async { + final data = await Get.toNamed(Routers.starLockRegisterPage); + if (data != null) { + state.emailOrPhoneController.text = data['phoneOrEmailStr']; + logic.checkNext(state.emailOrPhoneController); + state.pwdController.text = data['pwd']; + logic.checkNext(state.pwdController); + setState(() {}); + } + }, + ), + ], + ), + body: GestureDetector( + onTap: () { + FocusScope.of(context).unfocus(); + }, + child: ListView( + padding: EdgeInsets.only(top: 120.h, left: 40.w, right: 40.w), + children: [ + Container( + padding: EdgeInsets.all(10.w), + child: Center(child: Image.asset('images/icon_main_sky_1024.png', width: 110.w, height: 110.w))), + SizedBox(height: 50.w), + Obx(() => CommonItem( + leftTitel: '你所在的国家/地区'.tr, + rightTitle: '', + isHaveLine: true, + isPadding: false, + isHaveRightWidget: true, + isHaveDirection: true, + rightWidget: Text( + '${state.countryName} +${state.countryCode.value}', + textAlign: TextAlign.end, + style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor), + ), + action: () async { + final result = await Get.toNamed(Routers.selectCountryRegionPage); + if (result != null) { + result as Map; + state.countryCode.value = result['code']; + state.countryKey.value = result['countryName']; + logic.checkIpAction(); + } }, - icon: const Icon( - Icons.support_agent, - color: Colors.white, - )), - TextButton( - child: Text( - '注册'.tr, - style: TextStyle(color: Colors.white, fontSize: 24.sp), - ), - onPressed: () async { - final data = await Get.toNamed(Routers.starLockRegisterPage); - if (data != null) { - state.emailOrPhoneController.text = data['phoneOrEmailStr']; + )), + LoginInput( + focusNode: logic.state.emailOrPhoneFocusNode, + controller: state.emailOrPhoneController, + onchangeAction: (v) { logic.checkNext(state.emailOrPhoneController); - state.pwdController.text = data['pwd']; + }, + leftWidget: Padding( + padding: EdgeInsets.only(top: 30.w, bottom: 20.w, right: 5.w, left: 5.w), + child: Image.asset( + 'images/icon_login_account.png', + width: 36.w, + height: 36.w, + ), + ), + hintText: '请输入手机号或者邮箱'.tr, + // keyboardType: TextInputType.number, + inputFormatters: [ + // FilteringTextInputFormatter.allow(RegExp('[0-9]')), + LengthLimitingTextInputFormatter(30), + FilteringTextInputFormatter.singleLineFormatter + ]), + SizedBox(height: 10.h), + LoginInput( + focusNode: logic.state.pwdFocusNode, + controller: state.pwdController, + onchangeAction: (v) { logic.checkNext(state.pwdController); - setState(() {}); - } - }, + }, + isPwd: true, + // isSuffixIcon: 2, + leftWidget: Padding( + padding: EdgeInsets.only(top: 30.w, bottom: 20.w, right: 5.w, left: 5.w), + child: Image.asset( + 'images/icon_login_password.png', + width: 36.w, + height: 36.w, + ), + ), + hintText: '请输入密码'.tr, + inputFormatters: [ + LengthLimitingTextInputFormatter(20), + ]), + // SizedBox(height: 15.h), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Obx(() => GestureDetector( + onTap: () { + state.agree.value = !state.agree.value; + logic.changeAgreeState(); + }, + child: Container( + // color: Colors.red, + padding: EdgeInsets.only(left: 5.w, top: 20.w, right: 10.w, bottom: 20.h), + child: Image.asset( + state.agree.value ? 'images/icon_round_select.png' : 'images/icon_round_unSelect.png', + width: 35.w, + height: 35.w, + ), + ))), + // SizedBox( + // width: 5.w, + // ), + Flexible( + child: RichText( + text: TextSpan( + text: '我已阅读并同意'.tr, + style: TextStyle(color: const Color(0xff333333), fontSize: 20.sp), + children: [ + WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: GestureDetector( + child: + Text('《${'用户协议'.tr}》', style: TextStyle(color: AppColors.mainColor, fontSize: 20.sp)), + onTap: () { + Get.toNamed(Routers.webviewShowPage, arguments: { + 'url': XSConstantMacro.userAgreementURL, + 'title': '用户协议'.tr + }); + }, + )), + WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: GestureDetector( + child: + Text('《${'隐私政策'.tr}》', style: TextStyle(color: AppColors.mainColor, fontSize: 20.sp)), + onTap: () { + Get.toNamed(Routers.webviewShowPage, arguments: { + 'url': XSConstantMacro.privacyPolicyURL, + 'title': '隐私政策'.tr + }); + }, + )), + ], + )), + ) + ], + ), + SizedBox(height: 50.w), + Obx(() => SubmitBtn( + btnName: '登录'.tr, + fontSize: 28.sp, + borderRadius: 20.w, + padding: EdgeInsets.only(top: 25.w, bottom: 25.w), + isDisabled: state.canNext.value, + onClick: state.canNext.value + ? () { + if (state.agree.value == false) { + logic.showToast('请先同意用户协议及隐私政策'.tr); + return; + } else { + logic.login(); + } + } + : null)), + // SizedBox(height: 20.w), + // Obx(() => Visibility( + // visible: state.isCheckVerifyEnable.value, + // child: SubmitBtn( + // btnName: '一键登录', + // fontSize: 28.sp, + // borderRadius: 20.w, + // padding: EdgeInsets.only(top: 25.w, bottom: 25.w), + // // isDisabled: state.canNext.value, + // onClick: () { + // if (state.agree.value == false) { + // logic.showToast('请先同意用户协议及隐私政策'.tr); + // return; + // } else { + // logic.oneClickLoginAction(); + // } + // }), + // )), + SizedBox(height: 50.w), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + GestureDetector( + child: SizedBox( + // width: 150.w, + height: 50.h, + // color: Colors.red, + child: Center( + child: Text('${'忘记密码'.tr}?', style: TextStyle(fontSize: 22.sp, color: AppColors.mainColor)), + ), + ), + onTap: () { + Navigator.pushNamed(context, Routers.starLockForgetPasswordPage); + }, + ), + ], ), ], ), - body: GestureDetector( - onTap: (){ - FocusScope.of(context).unfocus(); - }, - child: ListView( - padding: EdgeInsets.only(top: 120.h, left: 40.w, right: 40.w), - children: [ - Container( - padding: EdgeInsets.all(10.w), - child: Center( - child: Image.asset('images/icon_main_sky_1024.png', - width: 110.w, height: 110.w))), - SizedBox(height: 50.w), - Obx(() => CommonItem( - leftTitel: '你所在的国家/地区'.tr, - rightTitle: '', - isHaveLine: true, - isPadding: false, - isHaveRightWidget: true, - isHaveDirection: true, - rightWidget: Text( - '${state.countryName} +${state.countryCode.value}', - textAlign: TextAlign.end, - style: TextStyle( - fontSize: 22.sp, color: AppColors.darkGrayTextColor), - ), - action: () async { - final result = - await Get.toNamed(Routers.selectCountryRegionPage); - if (result != null) { - result as Map; - state.countryCode.value = result['code']; - state.countryKey.value = result['countryName']; - logic.checkIpAction(); - } - }, - )), - LoginInput( - focusNode: logic.state.emailOrPhoneFocusNode, - controller: state.emailOrPhoneController, - onchangeAction: (v) { - logic.checkNext(state.emailOrPhoneController); - }, - leftWidget: Padding( - padding: EdgeInsets.only( - top: 30.w, bottom: 20.w, right: 5.w, left: 5.w), - child: Image.asset( - 'images/icon_login_account.png', - width: 36.w, - height: 36.w, - ), - ), - hintText: '请输入手机号或者邮箱'.tr, - // keyboardType: TextInputType.number, - inputFormatters: [ - // FilteringTextInputFormatter.allow(RegExp('[0-9]')), - LengthLimitingTextInputFormatter(30), - FilteringTextInputFormatter.singleLineFormatter - ]), - SizedBox(height: 10.h), - LoginInput( - focusNode: logic.state.pwdFocusNode, - controller: state.pwdController, - onchangeAction: (v) { - logic.checkNext(state.pwdController); - }, - isPwd: true, - // isSuffixIcon: 2, - leftWidget: Padding( - padding: EdgeInsets.only( - top: 30.w, bottom: 20.w, right: 5.w, left: 5.w), - child: Image.asset( - 'images/icon_login_password.png', - width: 36.w, - height: 36.w, - ), - ), - hintText: '请输入密码'.tr, - inputFormatters: [ - LengthLimitingTextInputFormatter(20), - ]), - // SizedBox(height: 15.h), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Obx(() => GestureDetector( - onTap: () { - state.agree.value = !state.agree.value; - logic.changeAgreeState(); - }, - child: Container( - // color: Colors.red, - padding: EdgeInsets.only( - left: 5.w, top: 20.w, right: 10.w, bottom: 20.h), - child: Image.asset( - state.agree.value - ? 'images/icon_round_select.png' - : 'images/icon_round_unSelect.png', - width: 35.w, - height: 35.w, - ), - ))), - // SizedBox( - // width: 5.w, - // ), - Flexible( - child: RichText( - text: TextSpan( - text: '我已阅读并同意'.tr, - style: TextStyle( - color: const Color(0xff333333), fontSize: 20.sp), - children: [ - WidgetSpan( - alignment: PlaceholderAlignment.middle, - child: GestureDetector( - child: Text('《${'用户协议'.tr}》', - style: TextStyle( - color: AppColors.mainColor, - fontSize: 20.sp)), - onTap: () { - Get.toNamed(Routers.webviewShowPage, - arguments: { - 'url': XSConstantMacro.userAgreementURL, - 'title': '用户协议'.tr - }); - }, - )), - WidgetSpan( - alignment: PlaceholderAlignment.middle, - child: GestureDetector( - child: Text('《${'隐私政策'.tr}》', - style: TextStyle( - color: AppColors.mainColor, - fontSize: 20.sp)), - onTap: () { - Get.toNamed(Routers.webviewShowPage, - arguments: { - 'url': XSConstantMacro.privacyPolicyURL, - 'title': '隐私政策'.tr - }); - }, - )), - ], - )), - ) - ], - ), - SizedBox(height: 50.w), - Obx(() => SubmitBtn( - btnName: '登录'.tr, - fontSize: 28.sp, - borderRadius: 20.w, - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - isDisabled: state.canNext.value, - onClick: state.canNext.value - ? () { - if (state.agree.value == false) { - logic.showToast('请先同意用户协议及隐私政策'.tr); - return; - } else { - logic.login(); - } - } - : null)), - // SizedBox(height: 20.w), - // Obx(() => Visibility( - // visible: state.isCheckVerifyEnable.value, - // child: SubmitBtn( - // btnName: '一键登录', - // fontSize: 28.sp, - // borderRadius: 20.w, - // padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - // // isDisabled: state.canNext.value, - // onClick: () { - // if (state.agree.value == false) { - // logic.showToast('请先同意用户协议及隐私政策'.tr); - // return; - // } else { - // logic.oneClickLoginAction(); - // } - // }), - // )), - SizedBox(height: 50.w), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - GestureDetector( - child: SizedBox( - // width: 150.w, - height: 50.h, - // color: Colors.red, - child: Center( - child: Text('${'忘记密码'.tr}?', - style: TextStyle( - fontSize: 22.sp, color: AppColors.mainColor)), - ), - ), - onTap: () { - Navigator.pushNamed( - context, Routers.starLockForgetPasswordPage); - }, - ), - Expanded( - child: SizedBox( - width: 10.sp, - )), - Obx(() => Visibility( - visible: state.isCheckVerifyEnable.value && - state.currentLanguage == 'zh_CN', - child: GestureDetector( - child: SizedBox( - // width: 150.w, - height: 50.h, - // color: Colors.red, - child: Center( - child: Text('一键登录'.tr, - style: TextStyle( - fontSize: 22.sp, - color: AppColors.mainColor)), - ), - ), - onTap: () { - logic.oneClickLoginAction(context); - }, - ), - )) - ], - ), - ], - ), - )); + ), + ); } Widget loginInput( @@ -351,8 +308,7 @@ class _StarLockLoginPageState extends State { inputFormatters: inputFormatters, decoration: InputDecoration( //输入里面输入文字内边距设置 - contentPadding: const EdgeInsets.only( - top: 8.0, left: -19.0, right: -15.0, bottom: 8.0), + contentPadding: const EdgeInsets.only(top: 8.0, left: -19.0, right: -15.0, bottom: 8.0), labelText: label, labelStyle: TextStyle(fontSize: 22.sp), hintStyle: TextStyle(fontSize: 22.sp), diff --git a/lib/login/register/starLock_register_logic.dart b/lib/login/register/starLock_register_logic.dart index b0731e23..ff7cc21a 100755 --- a/lib/login/register/starLock_register_logic.dart +++ b/lib/login/register/starLock_register_logic.dart @@ -101,6 +101,7 @@ class StarLockRegisterLogic extends BaseGetXController { if (entity.errorCode!.codeIsSuccessful) { if (entity.data!.abbreviation != 'CN') { showToast('当前国家不支持手机验证码注册,请使用邮箱进行注册'.tr); + state.isIphoneType.value = false; return; } if (state.countryName.value != entity.data!.name) { @@ -149,7 +150,7 @@ class StarLockRegisterLogic extends BaseGetXController { } @override - void onReady() { + void onReady() async { super.onReady(); XSConstantMacro().getDeviceInfoData().then((Map data) { @@ -158,5 +159,7 @@ class StarLockRegisterLogic extends BaseGetXController { // 适当处理错误 AppLog.log('获取设备信息时出错: $error'); }); + + await checkIpAction(); } } diff --git a/lib/login/register/starLock_register_page.dart b/lib/login/register/starLock_register_page.dart index 279010d0..10980ed2 100755 --- a/lib/login/register/starLock_register_page.dart +++ b/lib/login/register/starLock_register_page.dart @@ -31,44 +31,45 @@ class _StarLockRegisterPageState extends State { @override Widget build(BuildContext context) { return Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: const Color(0xFFFFFFFF), - appBar: TitleAppBar(barTitle: '注册'.tr, haveBack: true, backgroundColor: AppColors.mainColor), - body: GestureDetector( - onTap: () { - FocusScope.of(context).unfocus(); - }, - child: ListView( - padding: EdgeInsets.only(top: 40.h, left: 40.w, right: 40.w), - children: [ - topSelectCountryAndRegionWidget(), - middleTFWidget(), - Obx(() { - return SubmitBtn( - btnName: '注册'.tr, - // backgroundColorList: state.canSub.value ? [AppColors.mainColor] :[Colors.grey], - fontSize: 30.sp, - borderRadius: 20.w, - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - isDisabled: state.canSub.value, - onClick: state.canSub.value - ? () { - if (state.agree.value == false) { - logic.showToast('请先同意用户协议及隐私政策'.tr); - return; - } else { - logic.register(); - } + resizeToAvoidBottomInset: false, + backgroundColor: const Color(0xFFFFFFFF), + appBar: TitleAppBar(barTitle: '注册'.tr, haveBack: true, backgroundColor: AppColors.mainColor), + body: GestureDetector( + onTap: () { + FocusScope.of(context).unfocus(); + }, + child: ListView( + padding: EdgeInsets.only(top: 40.h, left: 40.w, right: 40.w), + children: [ + topSelectCountryAndRegionWidget(), + middleTFWidget(), + Obx(() { + return SubmitBtn( + btnName: '注册'.tr, + // backgroundColorList: state.canSub.value ? [AppColors.mainColor] :[Colors.grey], + fontSize: 30.sp, + borderRadius: 20.w, + padding: EdgeInsets.only(top: 25.w, bottom: 25.w), + isDisabled: state.canSub.value, + onClick: state.canSub.value + ? () { + if (state.agree.value == false) { + logic.showToast('请先同意用户协议及隐私政策'.tr); + return; + } else { + logic.register(); } - : null); - }), - SizedBox( - height: 20.h, - ), - _buildBottomAgreement() - ], - ), - )); + } + : null); + }), + SizedBox( + height: 20.h, + ), + _buildBottomAgreement() + ], + ), + ), + ); } Widget topSelectCountryAndRegionWidget() {