Files
FruitServer/docs/plans/INBOX.md
T

44 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## [已处理] 2026-10-20 | K42-A 收藏页/观看历史页 UI 重做 + 观看历史刷新卡 loading 修复(仅 App 端)
**用户指令(2026-10-20,原文)**:
> 「现在改收藏页和观看历史页面 ui 重新做 观看历史页面下拉刷新后一直loading修复下」
### 一、观看历史「一直 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`。
### 二、观看历史页 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 不变。
### 三、收藏页 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 不变。
**测试/门禁**
- 控制器:二次刷新后无残留 detailLoading;
- 两页:页头 Key、统计文案、卡片标题为 `AppColors.onSurface`、删除按钮可点击;
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
**流程**:从 `develop` 拉 `feature/flutter-k42-library-pages`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。