docs(plans): 留痕 K33-H 画中画回前台复位
This commit is contained in:
1 parent
75352e9817
commit
fbb1b6c30a
2 files changed
+55
No files matched your search
@@ -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,原文)**:
|
||||
|
||||
Reference in new issue
Block a user