From 71774f301da4b8502ac63347dee79eb4cdfd7db4 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 06:21:25 -0800 Subject: [PATCH] =?UTF-8?q?fix(payment-password):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9C=AA=E8=AE=BE=E7=BD=AE=E6=94=AF=E4=BB=98=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 识别后端"尚未设置支付密码"异常,显示明确引导语 "请先前往「我的」→「支付密码」完成设置",替代误导性的"请检查网络" - 简化空输入提示逻辑(直接使用 widget.hint) Co-Authored-By: Claude Sonnet 4.6 --- .../widgets/password_verify_dialog.dart | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/frontend/mobile-app/lib/features/planting/presentation/widgets/password_verify_dialog.dart b/frontend/mobile-app/lib/features/planting/presentation/widgets/password_verify_dialog.dart index 9a8bb5a8..5d5dc0fd 100644 --- a/frontend/mobile-app/lib/features/planting/presentation/widgets/password_verify_dialog.dart +++ b/frontend/mobile-app/lib/features/planting/presentation/widgets/password_verify_dialog.dart @@ -92,13 +92,14 @@ class _PasswordVerifyDialogState extends State { /// 流程: /// 1. 校验输入不为空 /// 2. 调用 [onVerify] 发起网络请求 - /// 3. valid=true → 关闭弹窗并返回 true(调用方继续提交认种) + /// 3. valid=true → 关闭弹窗并返回 true(调用方继续提交) /// 4. valid=false → 展示"密码错误"提示,留在弹窗 - /// 5. 抛出异常(网络错误等)→ 展示系统错误提示,留在弹窗 + /// 5. 抛出"尚未设置支付密码"异常 → 引导用户先完成设置 + /// 6. 其他异常(网络错误等)→ 展示系统错误提示,留在弹窗 Future _handleConfirm() async { final password = _passwordController.text.trim(); if (password.isEmpty) { - setState(() => _errorMessage = '请输入${widget.hint.replaceAll('请输入', '')}'); + setState(() => _errorMessage = widget.hint); return; } @@ -121,11 +122,15 @@ class _PasswordVerifyDialogState extends State { }); } } catch (e) { - // 网络/系统异常:提示检查网络 if (!mounted) return; + final msg = e.toString(); + // 未设置支付密码:给出明确引导,而非误导性的"网络错误" + final isNotSet = msg.contains('尚未设置支付密码') || msg.contains('payment password not set'); setState(() { _isVerifying = false; - _errorMessage = '验证失败,请检查网络后重试'; + _errorMessage = isNotSet + ? '请先前往「我的」→「支付密码」完成设置' + : '验证失败,请检查网络后重试'; }); } }