docs(plans): 留痕 K33-H 画中画回前台复位

This commit is contained in:
Zhou Weidong committed 2026-10-20 14:29:15 +08:00
1 parent 75352e9817
commit fbb1b6c30a
2 files changed
+55

No files matched your search

+28
View File
@@ -1,3 +1,31 @@
## [已处理] 2026-10-20 | K33-H 修复:画中画返回后播放页控件与底部导航消失(仅 App 端)
**用户指令(2026-10-20,原文)**:
> 「这里有个问题 首页 画中画播放后 再回来 播放页所有操作按钮及底部导航栏都没有了」
**根因分析(已定位)**
- `PlayerLogic` 中 `pip` / `pipPreparing` 为 true 时 `immersive`(即 `chromeHidden`)恒为 true;
- `player_view` 在 `logic.pip || logic.pipPreparing` 时直接渲染 `SizedBox.expand()`,浮层整体不显示;
- 首页 feed 的底部导航由 `onImmersiveChanged(chromeHidden)` 控制,同样被隐藏;
- 返回前台时只有原生 `onPipChanged(false)` 会清掉 `pip`,部分机型退出画中画不回调或回调丢失,于是 `pip` 残留为 true,控件与底栏永久隐藏。
**口径(只改 Flutter,不动后端、不改接口)**
1. `PlayerLogic.onLifecycle` 中,当 `state == AppLifecycleState.resumed` 且 `pip || pipPreparing` 为 true 时,强制复位:
- `pip = false; pipPreparing = false;`
- `notify();` 且 `notifyImmersive();`(让 `chromeHidden` 回到 false,首页底栏恢复显示);
- 复位逻辑放在重取票据 / `setAppResumed` 之前,保证会话按前台处理。
2. 不改变正常进出画中画的现有流程;不修改原生代码(客户端兜底即可)。
3. 首页 feed 与全屏播放页都走同一 `PlayerLogic`,两处一并修复;退出画中画后当前剧/集与播放进度不变。
**测试/门禁**
- 新增用例:模拟 `enterPip` 成功后触发 `AppLifecycleState.resumed`,断言 `logic.pip == false`、`chromeHidden == false`、`onImmersiveChanged` 最后收到 false;
- 现有播放器与 feed 测试保持通过;
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
**流程**:从 `develop` 拉 `fix/flutter-k33-pip-resume`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
---
## [已处理] 2026-10-20 | K33-G 首页 feed:rail 再下移 + 长按更多弹窗复用播放页(仅 App 端)
**用户指令(2026-10-20,原文)**: