Files
social-app/docs/plans/2026-03-16-settings-account-subpages-design.md
T

3.7 KiB
Raw Blame History

设置-账户子页面视觉重构设计(编辑资料 / 修改密码)

背景与目标

当前 编辑资料修改密码 子页面存在明显的“文档页/默认表单堆叠”观感,未满足 apps/rules/visual_design_language.md 要求的“高级、柔和、分层、助手产品感”。

本次设计目标:

  • 延续项目现有蓝灰体系,不改变品牌语气
  • 建立清晰的表面层级:背景层 -> 主内容层 -> 次级分组层 -> 交互强调层
  • 修改密码 对齐 忘记密码 的设计语言(分段、状态提示、密码输入体验),但保持“设置域”语义
  • 严格使用 AppColors / AppSpacing / AppRadius,移除新增硬编码视觉值

约束来源

  • apps/AGENTS.md
  • apps/rules/visual_design_language.md
  • 现有共享组件体系(AppButtonAppBannerFixedLengthCodeInput、Toast 系统)

方案选择

已确认采用方案 B:设置域统一壳层。

方案要点:

  • 在 settings feature 内建立可复用的页面壳与分组卡片语义
  • 两个子页面共享同一结构语言与间距节奏
  • 修改密码 采用步骤型结构(Step 1 验证邮箱 / Step 2 设置新密码)

信息架构

编辑资料

  • 页面头部:返回 + 标题 + 简短辅助说明
  • 主内容卡:
    • 资料概览组(头像占位、当前账号信息)
    • 基础信息组(用户名输入)
    • 个人简介组(多行输入 + 字数)
  • 底部强调操作区:保存修改 按钮(仅在有变更且可提交时可用)

修改密码(步骤型)

  • 页面头部:返回 + 标题 + 简短辅助说明
  • Step 1:邮箱验证与验证码发送
    • 展示当前邮箱
    • 发送/重发验证码 + 倒计时
  • Step 2:输入验证码并设置新密码
    • 验证码输入
    • 新密码、确认密码
    • 状态提示(使用 AppBanner
  • 底部强调操作区:确认修改

视觉与交互规则

  • 背景:AppColors.surfaceSecondary
  • 主卡:AppColors.white + AppColors.borderSecondary + 圆角 AppRadius.lg/xl
  • 次级分组:AppColors.surfaceTertiary/surfaceInfoLight(按语义使用)+ AppColors.borderTertiary
  • 输入聚焦态:AppColors.blue500
  • 间距节奏:
    • 页面外边距:AppSpacing.xl
    • 组内:AppSpacing.sm/lg
    • 组间:AppSpacing.xxl
  • 动效策略:仅保留柔和状态反馈(按钮 loading/disabled、步骤区显隐、输入 focus),不添加噱头动画

组件与复用策略

  • 优先复用:
    • AppButton
    • FixedLengthCodeInput
    • AppBanner
    • Toast 系统
    • PasswordField(与忘记密码页统一密码输入体验)
  • 在 settings 域新增可复用 UI
    • account_surface_scaffold.dart
    • account_section_card.dart

影响文件

  • 修改:apps/lib/features/settings/ui/screens/edit_profile_screen.dart
  • 修改:apps/lib/features/settings/ui/screens/change_password_screen.dart
  • 新增:apps/lib/features/settings/ui/widgets/account_surface_scaffold.dart
  • 新增:apps/lib/features/settings/ui/widgets/account_section_card.dart
  • 可能补充:apps/lib/core/theme/design_tokens.dart(仅缺失 token 时)

验收标准

  • 两个页面具备一致的“柔和卡片分层”结构
  • 修改密码页面与忘记密码页面在设计语言上可感知一致
  • 不出现“纯白文档页/后台表单页”观感
  • 不新增视觉硬编码,遵守 token 体系
  • 核心交互逻辑不回归(验证码、倒计时、提交、错误提示)

验证计划

  • flutter analyze
  • flutter test(至少覆盖 auth/reset-password 相关与 settings 相关用例)
  • 手工验证:
    • 编辑资料:无改动禁用、改动后可保存、成功后返回
    • 修改密码:发送验证码、倒计时、错误提示、成功返回