# 注册验证码流程 UX 优化设计 **日期**: 2026-02-26 **状态**: 已确认 ## 背景 当前注册流程存在问题: 1. 点击"下一步"后界面卡住,等待邮件发送完成才跳转 2. 重发验证码按钮没有倒计时 3. 重发按钮样式不美观,文字挤在一起 ## 目标 1. 优化界面响应速度,点击"下一步"立即跳转 2. 添加 60 秒倒计时,倒计时期间禁用重发按钮 3. 优化重发按钮样式 ## 设计方案 ### 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` 状态(可选) | ## 验收标准 1. 点击"下一步"后立即跳转到验证码界面,无卡顿 2. 验证码界面显示 60 秒倒计时按钮 3. 倒计时期间按钮禁用,显示秒数 4. 倒计时结束后按钮可点击,显示"重新发送" 5. 点击重发后重新开始 60 秒倒计时 6. 发送失败时 Toast 提示错误信息