docs(plans): 留痕 K61 导航栏闪白修复
This commit is contained in:
1 parent
0a48d2739a
commit
a755a5f657
2 files changed
+53
-25
No files matched your search
+23
-25
@@ -1,32 +1,30 @@
|
|||||||
## [已处理] 2026-10-20 | K60-A 用 flutter_native_splash 接管原生开屏(透明观感,无黑屏)(仅 App 端)
|
## [已处理] 2026-10-20 | K61-A 修复进入详情页/播放列表时底部闪白(系统导航栏与底部弹层)(仅 App 端)
|
||||||
|
|
||||||
**用户指令(2026-10-20,原文)**:
|
**用户指令(2026-10-20,原文)**:
|
||||||
> 「启动屏用户这flutter_native_splash 把原生的改成透明」
|
> 「现在有个问题 在安卓端 点击短剧标题 进入详情 底部会闪一下白色 进入短剧播放列表底部也会闪一下白色」
|
||||||
|
|
||||||
**口径**
|
**根因(已定位)**
|
||||||
1. `dev_dependencies` 增加 `flutter_native_splash`(取当前 pub 稳定版)。
|
1. `app.dart` 全局 `SystemUiOverlayStyle` 里 `systemNavigationBarColor: AppColors.bar`(#FFFDFB,近白),且未关闭 `systemNavigationBarContrastEnforced`。Android 15/16 强制 edge-to-edge 时,系统会在透明导航栏后绘制**默认白色对比遮罩**,页面切换/弹层动画的瞬间就露出这条白带;
|
||||||
2. `pubspec.yaml` 增加配置(不配置 image,原生阶段不出现任何静态图):
|
2. 详情页(ink #FFF8F0)与播放器(黑底)都没有覆盖导航栏颜色,弹层(选集列表)打开时导航栏仍是白色;
|
||||||
```yaml
|
3. `MaterialApp` 未约束 `BottomSheetThemeData`,`showModalBottomSheet` 动画首帧可能露出默认白色表面。
|
||||||
flutter_native_splash:
|
|
||||||
color: "#FFF8F0"
|
**口径(只改 Flutter,不动后端、不改接口)**
|
||||||
color_dark: "#FFF8F0"
|
1. 全局(`app.dart`):`SystemUiOverlayStyle.dark.copyWith(...)` 增加
|
||||||
android: true
|
- `systemNavigationBarColor: AppColors.ink`
|
||||||
ios: true
|
- `systemNavigationBarDividerColor: Colors.transparent`
|
||||||
web: false
|
- `systemNavigationBarContrastEnforced: false`
|
||||||
android_12:
|
- `statusBarColor: Colors.transparent`(保留)
|
||||||
color: "#FFF8F0"
|
2. `MaterialApp.theme` 增加:
|
||||||
color_dark: "#FFF8F0"
|
- `bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.transparent, modalBackgroundColor: Colors.transparent, surfaceTintColor: Colors.transparent)`
|
||||||
icon_background_color: "#FFF8F0"
|
3. 播放器(全屏与首页 feed):`PlayerPage` 外包 `AnnotatedRegion<SystemUiOverlayStyle>`,`systemNavigationBarColor: Colors.black`、`systemNavigationBarContrastEnforced: false`、浅色图标。
|
||||||
```
|
4. 详情页:`AnnotatedRegion` 导航栏 `AppColors.ink`、对比遮罩关闭;`DramaDetailBottomBar` 区域不得出现白色底。
|
||||||
说明:Android 12 及 iOS 的启动背景必须是实色,纯透明会被系统渲染成黑色;这里用与 Flutter 动画开屏完全一致的 `#FFF8F0`,视觉上就是「无原生开屏、直接进动画」,不存在黑屏。
|
5. 选集等底部弹层:打开期间导航栏颜色与弹层一致(`EpisodePickerSheet` 为 `AppColors.card`),并在弹层内使用 `SafeArea(bottom: true)`;关闭后恢复全局 ink。
|
||||||
3. 执行 `dart run flutter_native_splash:create` 生成原生资源:
|
6. 不改任何数据/交互逻辑。
|
||||||
- Android:`launch_background.xml`、`values-v31`/`values-night-v31` 的 splash 背景统一 `#FFF8F0`,无 image;
|
|
||||||
- iOS:LaunchScreen.storyboard 仅纯色背景、无 LaunchImage。
|
|
||||||
4. 清理此前手写的冲突项(如 `drawable/splash_transparent.xml`、自定义 splash_icon 引用);保留 Flutter 动画开屏页(K58-A 浅色版)。
|
|
||||||
5. 在 README 或 pubspec 注释注明:以后改开屏配置后需重新执行 `dart run flutter_native_splash:create`。
|
|
||||||
|
|
||||||
**测试/门禁**
|
**测试/门禁**
|
||||||
- 静态检查:生成的 launch_background / v31 styles 背景为 #FFF8F0、无 bitmap;iOS storyboard 无 LaunchImage;
|
- 新增:全局 overlay style 断言 `systemNavigationBarContrastEnforced == false`、`systemNavigationBarColor == AppColors.ink`;
|
||||||
|
- 播放页黑底导航栏、详情页 ink 导航栏断言;
|
||||||
|
- 抽查选集弹层打开时导航栏颜色为 card;
|
||||||
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
|
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
|
||||||
|
|
||||||
**流程**:从 `develop` 拉 `feature/flutter-k60-native-splash`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|
**流程**:从 `develop` 拉 `fix/flutter-k61-navbar-flash`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|
||||||
@@ -22100,6 +22100,36 @@ Running Gradle task 'assembleDebug'...
|
|||||||
|
|
||||||
解读:静态检查零告警,471 条测试全部通过,debug APK 构建成功。原生启动只保留浅暖纯色过渡,无静态 logo 或 LaunchImage,随后直接进入 Flutter 动画开屏。
|
解读:静态检查零告警,471 条测试全部通过,debug APK 构建成功。原生启动只保留浅暖纯色过渡,无静态 logo 或 LaunchImage,随后直接进入 Flutter 动画开屏。
|
||||||
|
|
||||||
|
## 2026-10-20 ReelShort:K61-A 修复底部导航栏闪白
|
||||||
|
|
||||||
|
- 前置状态:K60-A 已完成并合并,develop 合并提交 `9eec9ed`。
|
||||||
|
- 分支:`fix/flutter-k61-navbar-flash`
|
||||||
|
- 功能提交:`0aa5a99 fix(flutter): 修复详情与播放器底部闪白`
|
||||||
|
- develop 合并提交:`51e9402 merge: 合并 K61 导航栏闪白修复`,已推送。
|
||||||
|
- 全局 `appSystemOverlayStyle` 改导航栏为 `AppColors.ink`,分隔线透明、关闭 `systemNavigationBarContrastEnforced`,状态栏保持透明。
|
||||||
|
- `AppTheme.light()` 的 BottomSheet 背景、modal 背景和 surface tint 全部透明;播放页覆盖黑色导航栏和浅色图标,详情页覆盖 ink 导航栏和深色图标,底部操作条保持 ink。
|
||||||
|
- EpisodePickerSheet 打开期间覆盖 `AppColors.card` 导航栏,底部显式 SafeArea,关闭后恢复所属页面 overlay。
|
||||||
|
|
||||||
|
测试:新增全局 overlay/主题断言、首页 feed 与全屏播放器黑导航、详情页 ink 导航、选集弹层 card 导航与 SafeArea 断言。
|
||||||
|
|
||||||
|
门禁原始输出:
|
||||||
|
|
||||||
|
```text
|
||||||
|
$ dart analyze lib test
|
||||||
|
Analyzing lib, test...
|
||||||
|
No issues found!
|
||||||
|
|
||||||
|
$ flutter test
|
||||||
|
00:56 +473: All tests passed!
|
||||||
|
|
||||||
|
$ flutter build apk --debug
|
||||||
|
Running Gradle task 'assembleDebug'...
|
||||||
|
14.2s
|
||||||
|
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||||
|
```
|
||||||
|
|
||||||
|
解读:静态检查零告警,473 条测试全部通过,debug APK 构建成功。全局、路由和弹层三层导航栏颜色已统一,Android 15/16 edge-to-edge 对比遮罩被关闭。
|
||||||
|
|
||||||
## 2026-10-20 ReelShort:K53-A 详情页首帧直出
|
## 2026-10-20 ReelShort:K53-A 详情页首帧直出
|
||||||
|
|
||||||
- 前置状态:K52-A 已完成并合并,develop 合并提交 `a11ba50`。
|
- 前置状态:K52-A 已完成并合并,develop 合并提交 `a11ba50`。
|
||||||
|
|||||||
Reference in new issue
Block a user