docs(plans): 留痕 K42-A 收藏与观看历史页
This commit is contained in:
1 parent
2ed8f339db
commit
06757e9ab4
2 files changed
+65
-28
No files matched your search
+34
-28
@@ -1,37 +1,43 @@
|
||||
## [已处理] 2026-10-20 | K41-A 登录页:修复邮箱/密码输入不可见 + 视觉升级(仅 App 端)
|
||||
## [已处理] 2026-10-20 | K42-A 收藏页/观看历史页 UI 重做 + 观看历史刷新卡 loading 修复(仅 App 端)
|
||||
|
||||
**用户指令(2026-10-20,原文)**:
|
||||
> 「现在修改登录页面 邮箱登录输入框内容都看不见而且登录页面很素」
|
||||
> 「现在改收藏页和观看历史页面 ui 重新做 观看历史页面下拉刷新后一直loading修复下」
|
||||
|
||||
**根因(已定位)**:`lib/pages/auth/auth_form_widgets.dart` 中邮箱与密码 `TextField` 的 `style` 用了 `AppColors.onPrimary`(白色),而输入框填充是 `AppColors.bar`(近白 #FFFDFB),文字与背景同色导致「看不见」。
|
||||
### 一、观看历史「一直 loading」根因与修复(必须先修)
|
||||
`lib/core/data/services/watch_records_controller.dart`:
|
||||
1. `load()` 每次都用 `_uniqueRecords()` 重建列表,新记录**不带 drama 且 detailLoading 默认为 true**;
|
||||
2. `_hydrate()` 会跳过 `_detailCache` 已存在的 id,导致刷新后这些行既没有 drama、也不会再被 hydrate → 卡片一直转圈(首次进入正常,第二次下拉刷新必现)。
|
||||
3. 修复:
|
||||
- `_uniqueRecords()` 直接回填缓存:命中 `_detailCache` 的记录带 `drama` 且 `detailLoading: false`;未命中才为 true;
|
||||
- `_hydrate()` 中缓存命中的 id 也要回填到当前 records(不能只跳过);
|
||||
- 刷新失败保留旧 `records`,只在列表为空时展示整页错误;
|
||||
- 刷新期间不清空列表、不整页 loading。
|
||||
4. 新增测试:连续两次 `load()`(第二次详情已缓存)后所有记录 `detailLoading == false` 且 `drama != null`。
|
||||
|
||||
**口径(只改 Flutter,不动后端、不改接口;所有既有 Key 保留)**
|
||||
### 二、观看历史页 UI 重做(`lib/pages/watch_records/watch_records_page.dart`)
|
||||
1. 改用统一二级页头:`AppSubpageHeader(title: l10n.watchHistory)`,返回 Key `watch-records-back`;页面 Key `watch-records-page`;去掉 `PlainPageScaffold`。
|
||||
2. 顶部统计行:左侧「共 N 条」(12 号 muted),右侧「清空」文字按钮(图标 delete_sweep + 主色字,Key `watch-records-clear`)。
|
||||
3. 列表卡片重做(Key `watch-record-<id>` 保留):
|
||||
- 白卡、圆角 14、阴影 `AppTheme.cardShadow`、内边距 10;
|
||||
- 封面 72×96 圆角 10;标题 15 w700 `AppColors.onSurface`(修复原白色不可见)、最多 2 行;
|
||||
- 集数 12 muted;进度条 4px 圆角、主题色、底色 `AppColors.border`;
|
||||
- 进度文案 `x:xx / y:yy` 11 muted;更新时间 11 subtle(有值才显示);
|
||||
- 右上角 28 圆形浅灰删除按钮(Key `watch-record-remove-<id>` 保留)。
|
||||
4. 下拉刷新改为紧凑样式:20px、`strokeWidth 2`、主题色,`RefreshIndicator(color: AppColors.blue, backgroundColor: AppColors.card, strokeWidth: 2)`;列表保持 `AlwaysScrollableScrollPhysics`,空列表也能下拉。
|
||||
5. 空态/错误态沿用 `EmptyState`,Key 不变。
|
||||
|
||||
### 一、输入可见性(必修)
|
||||
1. 邮箱/密码输入文字颜色改 `AppColors.onSurface`(15 号),光标 `AppColors.blue`。
|
||||
2. 输入框:白底 `AppColors.card`、1px `AppColors.border`、圆角 14、高 52;聚焦时描边 `AppColors.blue`(160ms),错误态红色描边;prefix 图标聚焦时为主题色。
|
||||
3. hint 14 号 `AppColors.subtle`;密码可见性按钮保持。
|
||||
|
||||
### 二、登录页视觉升级(暖橙风,不再素)
|
||||
1. 背景:`AppTheme.pageGradient` 暖色渐变 + 两个柔和光斑(顶部右上 `AppColors.surfaceTop`、底部左下 `AppColors.gold` 透明度 0.18,`BlurMask`/径向渐变),加一层极淡的斜向细纹(可选,透明度 ≤0.04)。
|
||||
2. 落地页(Key `auth-landing`):
|
||||
- Logo 72×72、圆角 20、主色→粉色渐变 + 白色播放图标 36 + 轻阴影;
|
||||
- 品牌名 24 号 w900(Outfit),副标语 13 号 `AppColors.muted`;
|
||||
- 主 CTA「手机号登录」(Key `auth-entry-phone`):高 50、圆角 25、主色实底、白字 15 w800 + 图标;
|
||||
- 次 CTA「邮箱登录」(Key `auth-entry-email`):高 50、圆角 25、白底 + 1px 描边 + 深色字;
|
||||
- 两个按钮间距 12,整体距品牌 28;底部法务文案保持 9 号 muted(Key `auth-legal`)。
|
||||
3. 邮箱登录卡片(`_AuthCard`):
|
||||
- 白卡、圆角 20、内边距 20、阴影 `AppTheme.cardShadow`;
|
||||
- 顶部「登录 / 注册」分段切换(选中主色实底白字,未选中透明深色字,高 36 圆角 18),切换逻辑不变;
|
||||
- 字段标签 12 号 w700 `AppColors.onSurface`、与输入框间距 6;两字段间距 14;
|
||||
- 提交按钮(Key `auth-submit`)高 50、圆角 25、主色实底白字 15 w800,busy 时显示白色 18 圈;
|
||||
- 错误文案保持红色 12 号,位于提交按钮上方。
|
||||
4. 返回按钮(Key `auth-back`)改为 40×40 白色圆形 + 1px 描边 + 轻阴影、深色箭头(与二级页统一)。
|
||||
5. 键盘弹出时不遮挡输入(保持现有 `viewInsets` 处理)。
|
||||
### 三、收藏页 UI 重做(`lib/pages/favorites/favorites_page.dart`)
|
||||
1. 改用统一二级页头:`AppSubpageHeader(title: l10n.myFavorites)`,返回 Key `favorites-back`,页面 Key `favorites-page`。
|
||||
2. 顶部统计行:「共 N 部」(12 muted)+ 右侧弱化提示「长按卡片可取消收藏」11 subtle。
|
||||
3. 卡片替换为自定义 `_FavoriteCard`(Key `favorite-card-<id>` 保留):
|
||||
- 白卡圆角 14、阴影、内边距 10;封面 80×106 圆角 10;右上角实心粉色爱心按钮 28(Key `favorite-remove-<id>` 保留,点击取消收藏 + 轻震动);
|
||||
- 右侧:标题 15 w700 onSurface 最多 2 行、题材标签 1 行(最多 2 个灰底 11 号)、底部火焰 + `formatInteractionCount(viewCount)` + 共 N 集;
|
||||
- 点击进详情页。
|
||||
4. 下拉刷新同为紧凑样式;空态/错误态 Key 不变。
|
||||
|
||||
**测试/门禁**
|
||||
- 新增:邮箱/密码输入文字颜色为 `AppColors.onSurface`(不再是白色);登录落地页主/次 CTA 高度 50;卡片圆角 20;`auth-back` 40×40;
|
||||
- 既有登录/注册、错误提示、可见性切换用例保持通过;
|
||||
- 控制器:二次刷新后无残留 detailLoading;
|
||||
- 两页:页头 Key、统计文案、卡片标题为 `AppColors.onSurface`、删除按钮可点击;
|
||||
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
|
||||
|
||||
**流程**:从 `develop` 拉 `feature/flutter-k41-auth-redesign`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|
||||
**流程**:从 `develop` 拉 `feature/flutter-k42-library-pages`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|
||||
@@ -21416,6 +21416,37 @@ Running Gradle task 'assembleDebug'...
|
||||
|
||||
解读:静态检查零告警,447 条测试全部通过,debug APK 构建成功。工作区原有 `pubspec.lock` 变更未纳入本批提交。真机验收由用户执行。
|
||||
|
||||
## 2026-10-20 ReelShort:K42-A 收藏页/观看历史页 UI 重做与刷新修复
|
||||
|
||||
- 前置状态:K41-A 已合并,develop 合并提交 `7285a1c`。
|
||||
- 分支:`feature/flutter-k42-library-pages`
|
||||
- 功能提交:`794dc87 feat(flutter): 重做收藏与观看历史页`
|
||||
- develop 合并提交:`9f4dc93 merge: 合并 K42-A 收藏与观看历史页重做`,已推送。
|
||||
- 修复观看历史刷新一直转圈:`WatchRecordsController._uniqueRecords()` 命中详情缓存时直接回填 `drama` 且 `detailLoading=false`;`_hydrate()` 也会把缓存回填到本次重建的 records;刷新失败保留旧列表,刷新期间不清空、不切整页 loading。
|
||||
- 观看历史页改用 `AppSubpageHeader`,新增条数统计与主色清空按钮;卡片改为白底圆角 14、阴影、72×96 封面、15 w700 onSurface 标题、4px 主色进度条、11 号进度与更新时间,右上保留 28 圆形删除按钮。
|
||||
- 收藏页改用 `AppSubpageHeader`,新增收藏数量与长按取消提示;自定义白卡包含 80×106 封面、28 粉色爱心删除按钮、两行标题、单行题材标签、热度与总集数。
|
||||
- 两页下拉刷新统一为 `AppColors.blue`、`strokeWidth 2`,使用 `AlwaysScrollableScrollPhysics`;空态、错误态与详情跳转保持。
|
||||
|
||||
测试:新增连续两次 load 后缓存详情无 `detailLoading` 残留、刷新失败保留旧列表;两页补充页头/统计/标题颜色/封面尺寸/删除按钮/紧凑刷新断言。
|
||||
|
||||
门禁原始输出:
|
||||
|
||||
```text
|
||||
$ dart analyze lib test
|
||||
Analyzing 2 items...
|
||||
No issues found! (ran in 3.7s)
|
||||
|
||||
$ flutter test
|
||||
00:45 +449: All tests passed!
|
||||
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'...
|
||||
7.8s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
解读:静态检查零告警,449 条测试全部通过,debug APK 构建成功。环境产生的 `pubspec.lock` 版本漂移已还原,未纳入本批提交。真机验收由用户执行。
|
||||
|
||||
## 2026-10-20 ReelShort:详情页顶部圆形按钮统一修正
|
||||
|
||||
- 前置状态:K40-B 评论入口登录闸已合并,合并提交 `230f16a`。
|
||||
|
||||
Reference in new issue
Block a user