31 lines
2.6 KiB
Markdown
31 lines
2.6 KiB
Markdown
## [已处理] 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 留痕;真机验收由用户执行。
|