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,原文)**:
|
||||
|
||||
@@ -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` 变更未纳入本批提交。真机验收由用户执行。
|
||||
Reference in new issue
Block a user