Files
FruitServer/docs/plans/INBOX.md
T

2.6 KiB
Raw Blame History

[已处理] 2026-10-20 | K61-A 修复进入详情页/播放列表时底部闪白(系统导航栏与底部弹层)(仅 App 端)

用户指令(2026-10-20,原文):

「现在有个问题 在安卓端 点击短剧标题 进入详情 底部会闪一下白色 进入短剧播放列表底部也会闪一下白色」

根因(已定位)

  1. app.dart 全局 SystemUiOverlayStyle 里 systemNavigationBarColor: AppColors.bar(#FFFDFB,近白),且未关闭 systemNavigationBarContrastEnforced。Android 15/16 强制 edge-to-edge 时,系统会在透明导航栏后绘制默认白色对比遮罩,页面切换/弹层动画的瞬间就露出这条白带;
  2. 详情页(ink #FFF8F0)与播放器(黑底)都没有覆盖导航栏颜色,弹层(选集列表)打开时导航栏仍是白色;
  3. MaterialApp 未约束 BottomSheetThemeData,showModalBottomSheet 动画首帧可能露出默认白色表面。

口径(只改 Flutter,不动后端、不改接口)

  1. 全局(app.dart):SystemUiOverlayStyle.dark.copyWith(...) 增加
    • systemNavigationBarColor: AppColors.ink
    • systemNavigationBarDividerColor: Colors.transparent
    • systemNavigationBarContrastEnforced: false
    • statusBarColor: Colors.transparent(保留)
  2. MaterialApp.theme 增加:
    • bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.transparent, modalBackgroundColor: Colors.transparent, surfaceTintColor: Colors.transparent)
  3. 播放器(全屏与首页 feed):PlayerPage 外包 AnnotatedRegion<SystemUiOverlayStyle>,systemNavigationBarColor: Colors.black、systemNavigationBarContrastEnforced: false、浅色图标。
  4. 详情页:AnnotatedRegion 导航栏 AppColors.ink、对比遮罩关闭;DramaDetailBottomBar 区域不得出现白色底。
  5. 选集等底部弹层:打开期间导航栏颜色与弹层一致(EpisodePickerSheet 为 AppColors.card),并在弹层内使用 SafeArea(bottom: true);关闭后恢复全局 ink。
  6. 不改任何数据/交互逻辑。

测试/门禁

  • 新增:全局 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 留痕;真机验收由用户执行。