Files
ReelShort/docs/plans/2026-10-22-library-paging-ui.md
T

1.7 KiB

收藏与观看历史分页 UI

目标

  • /app/favorites 与 /app/watch/recent 按 PageResult{total,list} 分页接入。
  • 收藏页、观看历史页支持首屏、触底加载、无更多、刷新、失败重试和总数展示。
  • 观看记录直接使用后端 dramaTitle/dramaCover/episodeNumber,缺失时安全兜底。

实现步骤

  1. 新增通用 PageResult<T>,更新 LibraryApi、WatchApi、Repository 与内存替身。
  2. FavoriteController、WatchRecordsController 增加分页状态、请求代次、dramaId 去重。
  3. 页面通过滚动通知触发 loadMore,复用下拉刷新并增加通用分页 footer。
  4. 观看卡片优先渲染接口字段,标题为空时用本地化“第 N 集”,封面为空显示占位。
  5. 补 API、Controller 和 widget 测试,运行 analyze 与全量 flutter test。

风险与约束

  • 刷新期间保持旧列表,成功后原子替换并回到第 1 页;失败保留旧数据。
  • loadMore 与 refresh 通过请求代次隔离,旧响应不得覆盖新列表。
  • 空页立即停止加载;loaded >= total 后不再请求。
  • 不新增依赖、不提交现有 pubspec.lock,不启停服务、不操作真机。

2026-10-22 范围修订

  • 分页协议和 Controller 分页状态保持不改。
  • 观看历史优先使用后端 dramaTitle/dramaCover/episodeNumber,只有标题为空时才预取详情。
  • 标题为空且详情也未返回标题时,用本地化“第 N 集”兜底。
  • 有标题的条目点击播放时再按需加载详情,不在列表加载阶段产生 N+1。
  • 使用当前真实后端校验第 1/2 页请求参数、total 与 list;若运行实例仍忽略分页, 只在 PROGRESS 记录证据,不做前端全量兜底。