docs(plans): 下发 K20 客户端视觉统一任务
This commit is contained in:
1 parent
131f0c4e06
commit
810d9fc2dc
1 file changed
+89
@@ -20,6 +20,95 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [待处理] 2026-10-19 | K20 客户端视觉统一(辣椒红主题)
|
||||||
|
|
||||||
|
**用户指令(2026-10-19)**:「保留辣椒红,先做 K20 视觉统一」。
|
||||||
|
> 只改客户端 `ReelShort` 的视觉与布局;不改业务逻辑、接口调用、后端、Web、specs、main。
|
||||||
|
> 主题口径已拍板:**保留现有辣椒红暖色**(`AppColors.blue = #C4322A`),不恢复克莱因蓝。
|
||||||
|
|
||||||
|
### 一、目标
|
||||||
|
|
||||||
|
消除跨页面视觉不一致与明显不合理的紧凑布局,统一颜色、字号、间距、圆角、导航、卡片、按钮与进度条;
|
||||||
|
不改任何接口行为,不改既有测试断言。
|
||||||
|
|
||||||
|
### 二、统一 token(新增 `lib/core/theme/app_dimens.dart`)
|
||||||
|
|
||||||
|
- 页面左右边距:`16`(详情页 24 → 16;Auth 20 → 16)。
|
||||||
|
- 卡片:外层圆角 `16`、内边距 `16`;列表内嵌小块圆角 `12`、内边距 `12`;胶囊圆角 `20`。
|
||||||
|
- 字号档位:caption `12`、body `14`、列表标题 `15`、区块标题 `16`、页面标题 `20`(w800);
|
||||||
|
导航标签 `11`。**禁止再出现 9.5 / 10px 的业务文案**。
|
||||||
|
- 主按钮最小高度 `48`(整页主操作 `52`);点击区不小于 `44×44`。
|
||||||
|
- 主色只用 `AppColors`;新增 `AppColors.favorite`(收藏红心)如需保留粉色。
|
||||||
|
|
||||||
|
### 三、改造项(按文件)
|
||||||
|
|
||||||
|
1. **底部导航合一**:新增 `lib/core/widgets/app_bottom_nav.dart`,参数化 tab(图标/文案/选中);
|
||||||
|
高 `64`、图标 `22`、标签 `11`、选中态用主色胶囊(以现有 `home_view.dart` 为基准)。
|
||||||
|
替换 `home_view.dart`、`discover_view.dart`、`mine_view.dart` 三处导航;
|
||||||
|
`player_view.dart` 的 `_fallbackNav` 若保留也必须复用该组件。**保留现有 Key**(`tab-home` 等)与文案。
|
||||||
|
2. **账号入口卡重做**:`account_entry_card.dart` 高度 48 → `64`,图标 `16` → `18`,标签 `9.5` → `11`,
|
||||||
|
允许 2 行;四个入口点击区高度 ≥44;保留 `mine-account-card`、`mine-account-profile/devices/export/deactivate` 五个 Key。
|
||||||
|
3. **字号下限**:把 `home_drama_grid.dart:146`、`mine_view.dart:144/648/912`、`discover_view.dart:369`、
|
||||||
|
`home_view.dart:364`、`comment_tile.dart:114`、`watch_records_page.dart:282/296`、
|
||||||
|
`notices_page.dart:244/260`、`mine_view.dart:591`、`account_devices_page.dart:204` 提升到 ≥12(导航标签 11)。
|
||||||
|
4. **卡片/间距收敛**:`downloads_page.dart:305`(10)、`library_drama_tile.dart:26`、
|
||||||
|
`notices_page.dart:217`、`watch_records_page.dart:230`、`downloads_page.dart:200`、
|
||||||
|
`mine_view.dart:614/802` 统一到 12;`home_drama_grid.dart:104/109`、`mine_view.dart:377`、
|
||||||
|
`account_devices_page.dart:115`、`account_deactivate_page.dart:93` 统一到 16;
|
||||||
|
卡片内边距 9/14 收敛为 12/16。`drama_detail_view.dart:147/233` 的 24 → 16。
|
||||||
|
5. **颜色收敛**:替换 `downloads_page.dart:201/222/224/370`、`watch_records_page.dart:295`、
|
||||||
|
`mine_view.dart:143/590/637/717/743/828/835`、`favorites_page.dart:117`、
|
||||||
|
`home_quick_drawer.dart:54/77/118/262`、`player_view.dart:792/872/879` 中的直接 `Color(0x...)`
|
||||||
|
为最接近的 `AppColors` 常量(必要时新增 `favorite`);`account_devices_page.dart:196-203` 的
|
||||||
|
`scheme.tertiary` 改 `AppColors.gold` 或 `blueSoft`;`drama_detail_view.dart:169` 的
|
||||||
|
`onSurfaceVariant` 改 `AppColors.muted`。
|
||||||
|
6. **进度条统一**:详情续看 `drama_detail_view.dart:366-373`、观看记录 `watch_records_page.dart:267-272`、
|
||||||
|
下载 `downloads_page.dart:357-362` 统一为高 4、圆角 4、前景 `AppColors.blueSoft`、背景 `Colors.white24`;
|
||||||
|
Player 主拖动条保留金色。
|
||||||
|
7. **按钮与对比度**:`app_theme.dart` 增加 `filledButtonTheme.minimumSize = Size(0, 48)` 与
|
||||||
|
`outlinedButtonTheme`(深色前景用 `AppColors.blueSoft`);`mine_view.dart:390-401` 去掉
|
||||||
|
`VisualDensity.compact`;`empty_state.dart:150-158` 的重试色由 `scheme.primary` 改 `AppColors.blueSoft`。
|
||||||
|
8. **标题层级**:页面标题统一 20/w800,区块 16/w700,列表 15/w600-700;
|
||||||
|
`drama_detail_view.dart:159-164` 的 `headlineLarge` 显式改 24。
|
||||||
|
9. **深色唯一口径**:`app.dart:221-223` 改 `themeMode: ThemeMode.dark`;移除页面级
|
||||||
|
`Theme(data: AppTheme.dark())` 的重复包裹(保留根主题),确保日期选择器、弹窗也是深色。
|
||||||
|
若短期内删除页面级包裹风险大,可保留包裹,但 `themeMode` 必须为 dark。
|
||||||
|
10. **状态栏与安全区**:根 Scaffold 统一 `AnnotatedRegion<SystemUiOverlayStyle>(light)`,
|
||||||
|
`appBarTheme.systemOverlayStyle = light`、`systemNavigationBarColor = AppColors.bar`;
|
||||||
|
`favorites_page.dart:102`、`watch_records_page.dart:118`、`notices_page.dart:118`、
|
||||||
|
`downloads_page.dart:96`、`account_profile_page.dart:108`、`account_devices_page.dart:93`、
|
||||||
|
`account_export_page.dart:89`、`account_deactivate_page.dart:73` 的底部 padding
|
||||||
|
增加 `MediaQuery.paddingOf(context).bottom`(或 `SafeArea(top: false)`)。
|
||||||
|
11. **详情页返回与封面压暗**:`drama_detail_view.dart:80-107` 的加载/失败分支补带返回按钮的 AppBar;
|
||||||
|
`SliverAppBar` 封面顶部加黑色渐变,保证返回/更多图标在浅色封面上可读。
|
||||||
|
12. **选中态可见性**:`player_view.dart:834-845` 点赞/收藏选中时改实心图标
|
||||||
|
(`Icons.favorite` / `Icons.bookmark`);`discover_view.dart:262-296` 与
|
||||||
|
`mine_view.dart:537-564` 的选中项补 `Semantics(selected: true)`。
|
||||||
|
13. **点击区补足**:`discover_view.dart` 的 `_HeaderPill`(403-447)、`_LoginButton`(449-469)
|
||||||
|
最小高度 44;分类 Chip(262-296)点击区 44(视觉高度可保持 36,用透明 padding 扩大)。
|
||||||
|
14. **列表占位对齐**:`watch_records_page.dart:208-222` 占位高度与真实卡片一致(114),并复用相同 padding。
|
||||||
|
|
||||||
|
### 四、明确不做(留给 K21)
|
||||||
|
|
||||||
|
搜索 UI、Android 返回键行为、播放器切集票据失败黑屏、登录后继续原操作、下拉刷新、注销状态闭环、
|
||||||
|
时长/日期格式统一、语言上送后端。**本批不碰这些逻辑**。
|
||||||
|
|
||||||
|
### 五、约束与门禁
|
||||||
|
|
||||||
|
- 不改既有测试断言;视觉改动导致测试失败时改实现,不改测试(保留所有现有 Key 与文案)。
|
||||||
|
- `dart analyze lib test` 零告警;`flutter test` 全过;`flutter build apk --debug` 通过。
|
||||||
|
- 代码规模红线、文档注释、`// Author: fruit.com.cn` 与既有规范不变。
|
||||||
|
- 真机验收由用户执行,Codex 不做设备侧取证。
|
||||||
|
|
||||||
|
### 六、Git 与回执
|
||||||
|
|
||||||
|
- 从干净 `develop`(基线 `42ce1d1`)拉 `feature/flutter-k20-visual`,小步提交,完成后
|
||||||
|
`--no-ff` 合并回 develop 并 push;不动 main;作者统一 `Zhou Weidong <502333560@qq.com>`。
|
||||||
|
- 计划文档 `FruitServer/docs/plans/2026-10-19-K20.md`;留痕写 `PROGRESS.md` 并单独提交 FruitServer develop。
|
||||||
|
- 回执:改动清单、统一后的 token 值、测试条数与门禁原始输出、真机验收步骤(逐屏对照色/字/间距)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [已处理·待用户验收] 2026-10-19 | K19 客户端账号中心:资料 / 设备 / 数据导出 / 注销
|
## [已处理·待用户验收] 2026-10-19 | K19 客户端账号中心:资料 / 设备 / 数据导出 / 注销
|
||||||
|
|
||||||
**用户指令(2026-10-19)**:「先写 K19 任务书并派单」。
|
**用户指令(2026-10-19)**:「先写 K19 任务书并派单」。
|
||||||
|
|||||||
Reference in new issue
Block a user