fix(payment-password): 优化未设置支付密码时的错误提示
- 识别后端"尚未设置支付密码"异常,显示明确引导语 "请先前往「我的」→「支付密码」完成设置",替代误导性的"请检查网络" - 简化空输入提示逻辑(直接使用 widget.hint) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
cad7ebe832
commit
71774f301d
|
|
@ -92,13 +92,14 @@ class _PasswordVerifyDialogState extends State<PasswordVerifyDialog> {
|
||||||
/// 流程:
|
/// 流程:
|
||||||
/// 1. 校验输入不为空
|
/// 1. 校验输入不为空
|
||||||
/// 2. 调用 [onVerify] 发起网络请求
|
/// 2. 调用 [onVerify] 发起网络请求
|
||||||
/// 3. valid=true → 关闭弹窗并返回 true(调用方继续提交认种)
|
/// 3. valid=true → 关闭弹窗并返回 true(调用方继续提交)
|
||||||
/// 4. valid=false → 展示"密码错误"提示,留在弹窗
|
/// 4. valid=false → 展示"密码错误"提示,留在弹窗
|
||||||
/// 5. 抛出异常(网络错误等)→ 展示系统错误提示,留在弹窗
|
/// 5. 抛出"尚未设置支付密码"异常 → 引导用户先完成设置
|
||||||
|
/// 6. 其他异常(网络错误等)→ 展示系统错误提示,留在弹窗
|
||||||
Future<void> _handleConfirm() async {
|
Future<void> _handleConfirm() async {
|
||||||
final password = _passwordController.text.trim();
|
final password = _passwordController.text.trim();
|
||||||
if (password.isEmpty) {
|
if (password.isEmpty) {
|
||||||
setState(() => _errorMessage = '请输入${widget.hint.replaceAll('请输入', '')}');
|
setState(() => _errorMessage = widget.hint);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -121,11 +122,15 @@ class _PasswordVerifyDialogState extends State<PasswordVerifyDialog> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// 网络/系统异常:提示检查网络
|
|
||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
|
final msg = e.toString();
|
||||||
|
// 未设置支付密码:给出明确引导,而非误导性的"网络错误"
|
||||||
|
final isNotSet = msg.contains('尚未设置支付密码') || msg.contains('payment password not set');
|
||||||
setState(() {
|
setState(() {
|
||||||
_isVerifying = false;
|
_isVerifying = false;
|
||||||
_errorMessage = '验证失败,请检查网络后重试';
|
_errorMessage = isNotSet
|
||||||
|
? '请先前往「我的」→「支付密码」完成设置'
|
||||||
|
: '验证失败,请检查网络后重试';
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue