2.2 KiB
2.2 KiB
[已处理] 2026-10-20 | K46-A 榜单/新剧/预约页支持下拉刷新与上拉加载(仅 App 端)
用户指令(2026-10-20,原文):
「榜单 新剧 预约页面都要下拉刷新 上拉加载功能」
口径(只改 Flutter,不动后端、不改接口;数据源仍是本地 CatalogController.dramas,客户端分页,不伪造接口)
- 复用 K45-A 的
AppPullToRefresh(若 K45-A 尚未完成,先完成它)。 - 通用分页逻辑(抽到
lib/core/widgets/paged_local_list.dart或页面内复用):- 每页 20 条,
visible = all.take(pageCount * 20); - 滚动到距底 ≤200 时自动加载下一页:
pageCount++,底部先显示 20px 主题色转圈(≥300ms,避免闪烁),加载完若已到底显示「没有更多了」(新增 l10nnoMore:没有更多了 / No more / Tidak ada lagi),Key<page>-no-more; - 下拉刷新:
catalog.refresh()(静默)后pageCount = 1,保持当前滚动位置回到顶部; - 刷新中/加载中防重复触发。
- 每页 20 条,
- 榜单页:
AppPullToRefresh包裹整页滚动(三强 + 第 4 名起列表),第 4 名起列表使用上述分页;底部加载态 Keyranking-load-more。 - 新剧页:
AppPullToRefresh包裹;- 「今日首映」取自第一页第一条;「更多新剧」横滑区保留前 12 条;
- 其下新增「全部新剧」双列网格(复用
DramaGrid),使用上述分页;底部 Keynew-releases-load-more。
- 预约页:
AppPullToRefresh包裹(下拉调用catalog.refresh()),空态仍为票根卡;无列表时不显示加载更多。 - 三页滚动体统一
AlwaysScrollableScrollPhysics,空列表/短列表也能下拉。
测试/门禁
- 榜单/新剧:首屏 20 条,滚到底出现加载态并追加到 40 条;全部加载完显示
<page>-no-more;下拉刷新后回到 20 条; - 预约页:下拉触发 refresh,不出现加载更多;
dart analyze lib test零告警 +flutter test全过 +flutter build apk --debug。
流程:从 develop 拉 feature/flutter-k46-paged-pages;作者 Zhou Weidong <502333560@qq.com>;--no-ff 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。