docs(plans): 留痕 K52 原生开屏清理

This commit is contained in:
Zhou Weidong committed 2026-10-20 17:46:08 +08:00
1 parent 7fc5eb9067
commit a38809cc5d
2 files changed
+51 -18

No files matched your search

+13 -18
View File
@@ -1,25 +1,20 @@
## [已处理] 2026-10-20 | K51-A 修复首页进入详情页闪屏/灰屏(仅 App 端)
## [已处理] 2026-10-20 | K52-A 去掉原生静态开屏,直接进入带动画的开屏页(仅 App 端)
**用户指令(2026-10-20,原文)**:
> 「从首页进短剧详情页会闪屏 灰屏看下什么问题」
> 「原生的开屏也就不要了 直接显示带动画效果的开屏页即可」
**根因(已定位)**
`PlayerLogic.openDetail()` 在 push 详情页之前先执行:
1. `session.setRouteVisible(false)` —— 视频层被隐藏/降级为未就绪状态,feed 只能渲染封面占位;
2. `await session.playbackSettled` —— 等待期间首页仍可见;
此时封面若尚未进图片缓存,`RemoteImage` 会先画浅色底,叠加遮罩后呈灰白 → 用户看到的就是进详情前的灰屏闪一下;随后 `saveCurrentProgress` 再等待一次,进一步放大该可见窗口。
**口径(只改 Flutter,不动后端、不改接口)**
1. `openDetail()` 改为先 push 路由(视频组件保持挂载,不再 `setRouteVisible(false)`、不再 `await playbackSettled` 后再 push):
- push 之前 `session.setOverlayOpen(true)`,路由返回后 `session.setOverlayOpen(false)`(复用评论面板的暂停/恢复方式,保证详情页覆盖期间不继续外放声音);
- 路由期间视频正常暂停,返回后回到原播放状态与进度,不重新 seek。
- `saveCurrentProgress()` 放到 push 返回之后(不阻塞首帧)。
2. 首页 feed 的「标题点击进详情」「系列信息点击进详情」走同一逻辑,确保都不闪。
3. 详情页自身加载态保持 ink 背景 + 现有骨架,不改。
**口径(只改 Flutter / 原生启动资源,不动后端、不改接口)**
1. Android 原生开屏只保留纯色底:
- `android/app/src/main/res/drawable/launch_background.xml`、`drawable-v21/launch_background.xml`、`drawable-v31/launch_background.xml` 全部改为仅 `@color/splash_background`(去掉 bitmap / splash_icon 图层);
- `values-v31/styles.xml` 与 `values-night-v31/styles.xml`:`windowSplashScreenAnimatedIcon` 改为透明 drawable(新增 `drawable/splash_transparent.xml`,`<shape><solid android:color="@android:color/transparent"/></shape>`),移除 `windowSplashScreenIconBackgroundColor`;
- `splash_background` 保持 `#100C0A`,与 Flutter 动画开屏背景一致,避免色差。
2. iOS 原生开屏去掉静态图:
- `ios/Runner/Base.lproj/LaunchScreen.storyboard` 删除 `LaunchImage` imageView 及其 constraints,仅保留深色背景(现 rgb 0.0627/0.0470/0.0392)。
3. Flutter 动画开屏页保持 K50-A 的动画(logo 放大淡入 → FruitShorts → 水果短剧 → 转圈),作为用户看到的第一个画面;原生只做纯色过渡。
4. 不再引用 `drawable-*/splash_icon.png` 与 iOS `LaunchImage`(文件可保留,但不得出现在启动界面)。
**测试/门禁**
- 新增:从 feed 点详情后,push 前后视频 port 保持挂载(可断言 `session.active` 不变)、路由返回后播放状态与进度不变;
- 不再出现 `setRouteVisible(false)` 造成的占位渲染;
- 静态检查:三个 `launch_background.xml` 不再包含 bitmap;v31 styles 不含 `windowSplashScreenIconBackgroundColor`;LaunchScreen.storyboard 不含 `LaunchImage`;
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
**流程**:从 `develop` 拉 `fix/flutter-k51-detail-flash`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
**流程**:从 `develop` 拉 `feature/flutter-k52-native-splash-clean`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行(冷启动应看到纯深色 → Flutter 动画开屏)。