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,原文)**:
+27
View File
@@ -20789,3 +20789,30 @@ Running Gradle task 'assembleDebug'...
```
解读:静态检查零告警,410 条测试全部通过,debug APK 构建成功。工作区原有 `pubspec.lock` 变更未纳入本批提交。真机验收由用户执行。
## 2026-10-20 ReelShort:K33-H 画中画回前台复位
- 分支:`fix/flutter-k33-pip-resume`
- 功能提交:`bc8f3bc fix(flutter): 回前台复位残留画中画状态`
- develop 合并提交:`9b99d96 merge: 合并 K33-H 画中画回前台复位`,已推送。
- `PlayerLogic.onLifecycle`:回前台时若 `pip || pipPreparing` 为 true,先复位两者再 `notify()` + `notifyImmersive()`,随后照常做票据重取与 `setAppResumed(true)`。
- 修复部分机型退出画中画不回调 `onPipChanged(false)` 导致 `chromeHidden` 恒 true、播放浮层与首页底栏全部消失的问题;未改原生代码、未改正常进出画中画流程,当前剧/集与进度不变,feed 与全屏页同时生效。
- 测试:新增 `should_clear_stale_pip_when_app_returns_to_foreground`,模拟 pip 残留后 resumed,断言 pip/pipPreparing 复位、chromeHidden 为 false、onImmersiveChanged 最后为 false。
门禁原始输出:
```text
$ dart analyze lib test
Analyzing lib, test...
No issues found!
$ flutter test
00:39 +411: All tests passed!
$ flutter build apk --debug
Running Gradle task 'assembleDebug'...
1.953s
✓ Built build/app/outputs/flutter-apk/app-debug.apk
```
解读:静态检查零告警,411 条测试全部通过,debug APK 构建成功。工作区原有 `pubspec.lock` 变更未纳入本批提交。真机验收由用户执行。