4.4 KiB
4.4 KiB
K24 计划:客户端 UI 对齐设计稿
日期:2026-10-19
客户端基线:ReelShort/develop = b1c69e2
文档基线:FruitServer/develop = 93b2299
分支:feature/flutter-k24-design-system
一、范围
本批只做设计系统、3 Tab 底部导航、首页沉浸层、发现页:
- 设计 token:Obsidian Flare 色板、字体、间距/圆角、玻璃面板。
- 底部导航:Home / Discover / Me 三项;My List 不再独立成 Tab,内容并入 Me 页。
- 首页:保留
PlayerPage(homeMode: true)播放链路,只替换叠加层与信息卡。 - 发现页:品牌行、搜索、分类 chips、Continue Watching、4 个快捷入口、2 列 Trending。
不做:详情页、播放器、我的页、登录页的视觉重做(K25/K26);后端、Web、specs、main。
二、设计口径
权威来源:docs/design/README.md + screens/01-home.html + screens/02-discover.html。
不采用 DESIGN.md 顶部 YAML 的 #ffb4a5/#cdbdff。
| 语义 | 值 |
|---|---|
| background / ink / bar | #0B0C10 |
| card | #16181F |
| surface-elevated / raised | #1D1E28 |
| primary / blue | #FF5B3D |
| pressed / bluePressed | #FF4321 |
| secondary / lavender / blueSoft | #9278EA |
| gold | #FBBF24 |
| success | #34D399 |
| on-surface | #FFFFFF / #E3E2E8 |
| muted | #A1A1AA |
| subtle | #71717A |
| border | rgba(255,255,255,0.08) |
字体:Outfit(标题)、Plus Jakarta Sans(正文),OFL TTF 本地打包,不运行时联网。 下载失败时保留系统字体,并在回执与 PROGRESS 标注未完成项。
三、TDD 顺序
- 设计 token / 主题:先更新
test/theme/app_theme_test.dart期望值与新增 token 断言,再改app_colors.dart、app_theme.dart、app_dimens.dart。 - GlassPanel:先写组件测试(blur、渐变、描边、圆角),再实现
glass_panel.dart。 - 3 Tab:先改导航测试为
tab-home/tab-discover/tab-my,覆盖选中态、映射、沉浸隐藏; 再改app_bottom_nav.dart与home_view.dart。 - 首页:先用现有 Player 测试保证播放/进度/收藏不回归,再新增首页结构断言 (剧名、HOT、右侧互动栏、底部玻璃卡、Follow Series、Episodes)。
- 发现页:先写搜索过滤、2 列网格、Continue Watching 隐藏/显示测试,再改
discover_view.dart/discover_logic.dart/home_drama_grid.dart。 - 回归:更新 4 Tab 与轮播挂载相关断言,保留播放、进度、收藏、举报等行为测试。
四、影响文件
lib/core/theme/app_colors.dartlib/core/theme/app_theme.dartlib/core/theme/app_dimens.dartlib/core/widgets/glass_panel.dart(新增)lib/core/widgets/app_bottom_nav.dartlib/pages/home/home_view.dartlib/pages/home/home_logic.dartlib/pages/discover/discover_view.dartlib/pages/discover/discover_logic.dartlib/pages/discover/widgets/home_drama_grid.dartlib/pages/player/player_view.dart(仅 homeMode 叠加层)lib/pages/mine/mine_view.dart(仅把 My List 区块并入 Me)pubspec.yaml、assets/fonts/*- 相关
test/**
五、数据缺口与降级
| 设计字段 | 现有数据 | 处理 |
|---|---|---|
| 评分 | Drama 无评分字段 |
隐藏,不伪造 |
| 完结状态 | 无完结字段 | 隐藏 |
| 榜单名次 | 无字段 | 用 isHot + viewCount 排序展示,不编名次 |
| VIP 徽章 | 无 VIP 字段;Episode.locked 仅集级 |
列表不显示 VIP 徽章 |
| Free 徽章 | freeEpisodes 仅详情接口 |
有值才显示 |
| 点赞/评论数 | 互动接口无剧级计数 | 只显示图标或文案,不编数字 |
| Continue Watching 集数/剩余时长 | WatchProgress 有位置/时长,无集号 |
有记录才显示,集号缺失时省略 |
六、风险
- 首页叠加层改动可能影响沉浸模式、PiP、下载入口与既有 tooltip;通过保留原有行为入口并跑
test/widget_test.dart、test/home/**、test/player/**控制风险。 - 3 Tab 合并会触碰多个导航测试;只调整 Tab 数量/Key 断言,不改播放与收藏断言。
- 新字体增加安装包体积;只打包 Regular/SemiBold/Bold 必要字重。
- 发现页数据源仍用
CategoryController.visibleDramas,不新增接口。
七、门禁
flutter pub get
dart analyze lib test
flutter test
flutter build apk --debug
提交作者/提交者:Zhou Weidong <502333560@qq.com>。