25 lines
2.2 KiB
Markdown
25 lines
2.2 KiB
Markdown
## [已处理] 2026-10-20 | K53-A 详情页首帧直出内容,去掉「先空白背景再出内容」(仅 App 端)
|
||
|
||
**用户指令(2026-10-20,原文)**:
|
||
> 「现在从首页的短剧标题点进去仍然会闪屏 先显示详情页背景色 然后才显示内容 还是没有修改好」
|
||
|
||
**根因(已定位)**
|
||
`drama_detail_view.dart` 的 `_page()` 第一行是 `if (logic.loading) return _loading(l10n);`:即便是从首页卡片进入(标题、封面、简介、数据都已具备),详情接口未返回前整页被替换成「ink 背景 + AppBar + 转圈」的空白页;接口返回后才渲染真正内容 → 表现为「先闪一下底色,再出内容」。
|
||
|
||
**口径(只改 Flutter,不动后端、不改接口)**
|
||
1. 首帧直出:`_page()` 不再因 `logic.loading` 整页 loading;直接用 `logic.drama`(初始即传入的卡片数据)渲染 Header / 数据卡 / 简介 / 标签。
|
||
2. 选集区按需加载:
|
||
- `drama.episodes.isEmpty && logic.loading` → 选集区显示 6 个骨架格(1:1 圆角块 + 轻微呼吸),Key `detail-episodes-loading`;
|
||
- 详情失败 → 选集区显示「加载失败 + 重试」,Key `detail-episodes-retry`,页面其它内容不受影响;
|
||
- 详情成功 → 正常渲染选集网格。
|
||
3. 仅当传入卡片本身没有可用内容(标题与封面都为空)时,才允许整页 loading/失败页;现有 `detail-error` 等 Key 保留给该场景。
|
||
4. 底部 CTA 在选集未加载时禁用(灰态)并显示 `startWatching`,详情到达后恢复可点。
|
||
5. 不改 `openDetail` 的跳转方式(K51-A 已改)。
|
||
|
||
**测试/门禁**
|
||
- 新增:进入详情页首帧即可看到 `detail-title`、`detail-poster`、`detail-stats`,且不存在整页 `CircularProgressIndicator`;
|
||
- 详情加载中选集区显示 `detail-episodes-loading`;失败显示 `detail-episodes-retry` 且标题仍在;
|
||
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
|
||
|
||
**流程**:从 `develop` 拉 `fix/flutter-k53-detail-first-frame`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|