2.5 KiB
2.5 KiB
注册验证码流程 UX 优化设计
日期: 2026-02-26 状态: 已确认
背景
当前注册流程存在问题:
- 点击"下一步"后界面卡住,等待邮件发送完成才跳转
- 重发验证码按钮没有倒计时
- 重发按钮样式不美观,文字挤在一起
目标
- 优化界面响应速度,点击"下一步"立即跳转
- 添加 60 秒倒计时,倒计时期间禁用重发按钮
- 优化重发按钮样式
设计方案
1. 乐观跳转策略
改动文件: apps/lib/features/auth/ui/screens/register_screen.dart
- 点击"下一步"后,不等待
submitStep1()完成,立即跳转到验证码界面 submitStep1()在后台执行- 验证码界面监听发送结果,失败时用 Toast 提示
2. 倒计时状态管理
改动文件: apps/lib/features/auth/ui/screens/register_verification_screen.dart
- 添加
Timer管理倒计时状态 - 初始进入界面时启动 60 秒倒计时
- 重发成功后重置 60 秒倒计时
- 离开界面时取消 Timer
状态:
countdown: 当前剩余秒数 (60 → 0)canResend: 是否可重发 (countdown == 0)
3. 重发按钮样式
改动文件: apps/lib/features/auth/ui/screens/register_verification_screen.dart
视觉规格:
- 宽度: 90px
- 高度: 40px
- 圆角: 8px
- 边框: 1px
两种状态:
| 状态 | 文字 | 边框颜色 | 文字颜色 | 可点击 |
|---|---|---|---|---|
| 倒计时中 | "60 s" / "59 s" ... |
AppColors.slate300 |
AppColors.slate400 |
否 |
| 可重发 | "重新发送" |
AppColors.primary |
AppColors.primary |
是 |
4. 错误提示
改动文件: apps/lib/features/auth/ui/screens/register_verification_screen.dart
- 发送/重发验证码失败时,使用
Toast.show()显示错误提示 - 不阻塞用户操作,用户可再次点击重发
实现范围
| 文件 | 改动内容 |
|---|---|
register_screen.dart |
乐观跳转,后台发送验证码 |
register_verification_screen.dart |
Timer 倒计时、按钮样式、Toast 错误提示 |
register_cubit.dart |
添加 isSending 状态(可选) |
验收标准
- 点击"下一步"后立即跳转到验证码界面,无卡顿
- 验证码界面显示 60 秒倒计时按钮
- 倒计时期间按钮禁用,显示秒数
- 倒计时结束后按钮可点击,显示"重新发送"
- 点击重发后重新开始 60 秒倒计时
- 发送失败时 Toast 提示错误信息