From e7a39b1c909cfae47f2e5560824342cb8992fac2 Mon Sep 17 00:00:00 2001 From: wuyaxi <18682150237@163.com> Date: Thu, 17 Jul 2025 09:49:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=A0=BC=E5=BC=8F=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../register/starLock_register_logic.dart | 29 +++++++++++++++++++ .../register/starLock_register_xhj_page.dart | 4 +++ 2 files changed, 33 insertions(+) diff --git a/lib/login/register/starLock_register_logic.dart b/lib/login/register/starLock_register_logic.dart index 5796d422..91580d43 100755 --- a/lib/login/register/starLock_register_logic.dart +++ b/lib/login/register/starLock_register_logic.dart @@ -149,6 +149,35 @@ class StarLockRegisterLogic extends BaseGetXController { state.pwdIsOK && state.phoneOrEmailStr.value.isNotEmpty; } + // 在 StarLockRegisterLogic 类中添加 + bool validatePhoneOrEmailFormat() { + final String input = state.phoneOrEmailStr.value; + + if (state.isIphoneType.value) { + // 手机号验证:纯数字,长度合理 + if (input.isEmpty) { + showToast('请输入手机号'.tr); + return false; + } + if (!RegExp(r'^[0-9]+$').hasMatch(input)) { + showToast('手机号只能包含数字'.tr); + return false; + } + } else { + // 邮箱验证:必须包含@,格式正确 + if (input.isEmpty) { + showToast('请输入邮箱地址'.tr); + return false; + } + if (!input.contains('@')) { + showToast('邮箱地址必须包含@符号'.tr); + return false; + } + } + + return true; + } + @override void onReady() { super.onReady(); diff --git a/lib/login/register/starLock_register_xhj_page.dart b/lib/login/register/starLock_register_xhj_page.dart index c406d823..94262b22 100755 --- a/lib/login/register/starLock_register_xhj_page.dart +++ b/lib/login/register/starLock_register_xhj_page.dart @@ -210,6 +210,10 @@ class _StarLockRegisterPageState extends State { Obx(() => GestureDetector( onTap: (state.canSendCode.value && state.canResend.value) ? () async { + if (!logic.validatePhoneOrEmailFormat()) { + return; + } + // Navigator.pushNamed(context, Routers.safetyVerificationPage, arguments: {"countryCode":"+86", "account":state.phoneOrEmailStr.value}); final result = await Get.toNamed( Routers.safetyVerificationPage,