2.6 KiB
2.6 KiB
[已处理] 2026-10-20 | K61-A 修复进入详情页/播放列表时底部闪白(系统导航栏与底部弹层)(仅 App 端)
用户指令(2026-10-20,原文):
「现在有个问题 在安卓端 点击短剧标题 进入详情 底部会闪一下白色 进入短剧播放列表底部也会闪一下白色」
根因(已定位)
app.dart全局SystemUiOverlayStyle里systemNavigationBarColor: AppColors.bar(#FFFDFB,近白),且未关闭systemNavigationBarContrastEnforced。Android 15/16 强制 edge-to-edge 时,系统会在透明导航栏后绘制默认白色对比遮罩,页面切换/弹层动画的瞬间就露出这条白带;- 详情页(ink #FFF8F0)与播放器(黑底)都没有覆盖导航栏颜色,弹层(选集列表)打开时导航栏仍是白色;
MaterialApp未约束BottomSheetThemeData,showModalBottomSheet动画首帧可能露出默认白色表面。
口径(只改 Flutter,不动后端、不改接口)
- 全局(
app.dart):SystemUiOverlayStyle.dark.copyWith(...)增加systemNavigationBarColor: AppColors.inksystemNavigationBarDividerColor: Colors.transparentsystemNavigationBarContrastEnforced: falsestatusBarColor: Colors.transparent(保留)
MaterialApp.theme增加:bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.transparent, modalBackgroundColor: Colors.transparent, surfaceTintColor: Colors.transparent)
- 播放器(全屏与首页 feed):
PlayerPage外包AnnotatedRegion<SystemUiOverlayStyle>,systemNavigationBarColor: Colors.black、systemNavigationBarContrastEnforced: false、浅色图标。 - 详情页:
AnnotatedRegion导航栏AppColors.ink、对比遮罩关闭;DramaDetailBottomBar区域不得出现白色底。 - 选集等底部弹层:打开期间导航栏颜色与弹层一致(
EpisodePickerSheet为AppColors.card),并在弹层内使用SafeArea(bottom: true);关闭后恢复全局 ink。 - 不改任何数据/交互逻辑。
测试/门禁
- 新增:全局 overlay style 断言
systemNavigationBarContrastEnforced == false、systemNavigationBarColor == AppColors.ink; - 播放页黑底导航栏、详情页 ink 导航栏断言;
- 抽查选集弹层打开时导航栏颜色为 card;
dart analyze lib test零告警 +flutter test全过 +flutter build apk --debug。
流程:从 develop 拉 fix/flutter-k61-navbar-flash;作者 Zhou Weidong <502333560@qq.com>;--no-ff 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。