docs(plans): 留痕 K46-A 榜单新剧分页

This commit is contained in:
Zhou Weidong committed 2026-10-20 16:53:35 +08:00
1 parent fd59d1a19d
commit 8113a4efd3
2 files changed
+51 -12

No files matched your search

+19 -12
View File
@@ -1,20 +1,27 @@
## [已处理] 2026-10-20 | K44-A 个人资料页:去掉生日字段 + 保存按钮文案修正(仅 App 端)
## [已处理] 2026-10-20 | K46-A 榜单/新剧/预约页支持下拉刷新与上拉加载(仅 App 端)
**用户指令(2026-10-20,原文)**:
> 「在修改下 个人资料页面 设置生日先不要 收藏按钮文案改为保存」
> 「榜单 新剧 预约页面都要下拉刷新 上拉加载功能」
**现状**
- `lib/pages/account/account_profile_page.dart` 含生日选择字段(Key `account-birthday`)与 `_birthday` 状态;
- 保存按钮(Key `account-profile-save`)用的是 `l10n.save`,而该 key 当前值是「收藏」,按钮文案显示成「收藏」而不是「保存」。
**口径(只改 Flutter,不动后端、不改接口;数据源仍是本地 `CatalogController.dramas`,客户端分页,不伪造接口)**
**口径(只改 Flutter,不动后端、不改接口)**
1. 去掉生日字段:删除 `_birthdayField`、`_birthday` 状态、日期选择逻辑与 `account-birthday` Key;保存时不再传 birthday(保持现有 `save()` 签名不改后端参数,仅传 null/不传)。
2. `l10n.save` 文案改为「保存」(en:Save / id:Simpan);该 key 目前只被个人资料保存按钮使用,不影响收藏相关文案(`favorite` / `myFavorites` 等保持「收藏」)。
3. 个人资料页其余字段、保存逻辑、错误提示、返回按钮(统一二级页头)保持不变。
4. 更新测试:不再存在 `account-birthday`;保存按钮文案为「保存」;保存流程仍正常。
1. 复用 K45-A 的 `AppPullToRefresh`(若 K45-A 尚未完成,先完成它)。
2. 通用分页逻辑(抽到 `lib/core/widgets/paged_local_list.dart` 或页面内复用):
- 每页 20 条,`visible = all.take(pageCount * 20)`;
- 滚动到距底 ≤200 时自动加载下一页:`pageCount++`,底部先显示 20px 主题色转圈(≥300ms,避免闪烁),加载完若已到底显示「没有更多了」(新增 l10n `noMore`:没有更多了 / No more / Tidak ada lagi),Key `<page>-no-more`;
- 下拉刷新:`catalog.refresh()`(静默)后 `pageCount = 1`,保持当前滚动位置回到顶部;
- 刷新中/加载中防重复触发。
3. 榜单页:`AppPullToRefresh` 包裹整页滚动(三强 + 第 4 名起列表),第 4 名起列表使用上述分页;底部加载态 Key `ranking-load-more`。
4. 新剧页:
- `AppPullToRefresh` 包裹;
- 「今日首映」取自第一页第一条;「更多新剧」横滑区保留前 12 条;
- 其下新增「全部新剧」双列网格(复用 `DramaGrid`),使用上述分页;底部 Key `new-releases-load-more`。
5. 预约页:`AppPullToRefresh` 包裹(下拉调用 `catalog.refresh()`),空态仍为票根卡;无列表时不显示加载更多。
6. 三页滚动体统一 `AlwaysScrollableScrollPhysics`,空列表/短列表也能下拉。
**测试/门禁**
- 新增/更新上述断言;
- 榜单/新剧:首屏 20 条,滚到底出现加载态并追加到 40 条;全部加载完显示 `<page>-no-more`;下拉刷新后回到 20 条;
- 预约页:下拉触发 refresh,不出现加载更多;
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
**流程**:从 `develop` 拉 `fix/flutter-k44-profile`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
**流程**:从 `develop` 拉 `feature/flutter-k46-paged-pages`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
+32
View File
@@ -21554,6 +21554,38 @@ Running Gradle task 'assembleDebug'...
解读:静态检查零告警,450 条测试全部通过,debug APK 构建成功。真机交互与刷新手感由用户验收。
## 2026-10-20 ReelShort:K46-A 榜单/新剧分页与预约刷新
- 前置状态:K45-A 已合并,develop 合并提交 `805762f`。
- 分支:`feature/flutter-k46-paged-pages`
- 功能提交:`c4dcb71 feat(flutter): 增加榜单新剧分页与预约刷新`
- develop 合并提交:`8f3049f merge: 合并 K46-A 榜单新剧分页与预约刷新`,已推送。
- 新增 `PagedLocalListController` 与 `PagedLoadFooter`:每页 20 条、距底 200 内自动追加、加载态至少 300ms、20px 主题色转圈、防重复触发、到底展示「没有更多了」。
- 榜单整页接入 `AppPullToRefresh`,前三名保持领奖台,第 4 名起按页追加;下拉静默 `catalog.refresh()` 后回到第一页并滚回顶部。
- 新剧页接入下拉刷新;今日首映取第一页第一条,横滑区保留前 12 条,新增「全部新剧」双列网格并按 20 条分页。
- 预约页接入下拉刷新,保留票根空态,不显示加载更多。
- 三页滚动体均使用 `AlwaysScrollableScrollPhysics`;新增三语 `noMore` 与 `newReleasesAll`。
测试:榜单与新剧覆盖首屏 20、追加到 40、300ms 加载态、到底提示与刷新重置;预约覆盖下拉触发静默刷新且无加载更多。全量测试增至 453 条。
门禁原始输出:
```text
$ dart analyze lib test
Analyzing 2 items...
No issues found! (ran in 2.8s)
$ flutter test
00:45 +453: All tests passed!
$ flutter build apk --debug
Running Gradle task 'assembleDebug'...
7.5s
✓ Built build/app/outputs/flutter-apk/app-debug.apk
```
解读:静态检查零告警,453 条测试全部通过,debug APK 构建成功。真机分页滚动与刷新手感由用户验收。
## 2026-10-20 ReelShort:详情页顶部圆形按钮统一修正
- 前置状态:K40-B 评论入口登录闸已合并,合并提交 `230f16a`。