2.1 KiB
2.1 KiB
[已处理] 2026-10-20 | K43-A 修复首页冷启动灰屏闪一下(封面占位改深色)(仅 App 端)
用户指令(2026-10-20,原文):
「现在优化下首页的播放 每次启动安装 首页会灰屏一下 查下是什么原因」
已定位原因
- 冷启动链路:原生开屏(深色)→
SplashPage(ink)→catalog.settled后进入 feed;此时视频未就绪,走 K40-A 的封面占位。 RemoteImage的加载中/失败占位底色是AppColors.bar(#FFFDFB 近白),上面又叠了0x66000000黑遮罩(40% 黑),两者混合后呈中灰,在深色开屏与视频之间就出现「灰屏一下」。- 视频 Texture 首帧前本身是黑,不构成灰屏。
口径(只改 Flutter,不动后端、不改接口)
RemoteImage增加可选fallbackColor(默认仍为AppColors.bar,其它页面行为不变)。- 播放页未就绪占位:
RemoteImage(..., fallbackColor: Colors.black);遮罩从0x66000000降为0x4D000000(30%),保证「黑底 → 封面 → 视频」全程无浅色/灰色闪屏。 - feed 首帧前最底层始终为纯黑:保留
player-fallback-background并在其下垫ColoredBox(Colors.black),确保任何加载阶段都不会露出页面底色。 - 顺带确认:
_HomeTabs的ValueKey(catalog.dramas.first.id)会在目录首项变化时重建整棵 Tab 树;仅当首项 id 变化才重建,冷启动只发生一次,保持现状,不加额外动画。 - 其它页面(列表、详情、收藏等)的
RemoteImage占位保持原样。
测试/门禁
- 新增:播放页未就绪时
player-fallback-background的RemoteImage.fallbackColor == Colors.black;遮罩透明度为 0x4D; - 现有播放/首页用例保持通过;
dart analyze lib test零告警 +flutter test全过 +flutter build apk --debug。
流程:从 develop 拉 fix/flutter-k43-cold-start-flash;作者 Zhou Weidong <502333560@qq.com>;--no-ff 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行(冷启动观察是否还有灰屏)。