docs(plans): 留痕 K78 底部导航放大
This commit is contained in:
1 parent
3a25534bc1
commit
82dd899ad0
2 files changed
+51
-44
No files matched your search
+23
-44
@@ -1,65 +1,44 @@
|
||||
# INBOX
|
||||
|
||||
## [已处理] K77-A 视频未就绪不再显示封面,改由进度条表示加载
|
||||
## [已处理] K78-A 底部导航图标与文字放大
|
||||
|
||||
### 需求
|
||||
|
||||
1. 视频还没加载出来时**不显示封面**,视频区保持纯黑。
|
||||
2. 加载中(首帧未就绪 / 中途 network buffering)用**进度条本身**做加载状态:
|
||||
轨道上跑一段主题色高光,不要静态空进度条。
|
||||
底部导航(首页/剧场/创作/我的,浅色与首页 feed 深色共用 `AppBottomNav`)的图标和文字偏小,
|
||||
整体放大一档。
|
||||
|
||||
### 现状
|
||||
|
||||
- `lib/pages/player/widgets/player_video_surface.dart`
|
||||
- `_FallbackBackground` 会渲染 `RemoteImage(posterUrl)` + 黑色遮罩(key `player-fallback-cover` / `player-fallback-scrim`)
|
||||
- `player_view.dart` 传入 `posterUrl: drama.posterUrl`
|
||||
- `lib/pages/player/widgets/home_feed_overlay_parts.dart` `_FeedProgressBar`
|
||||
- 控制器为空时画一条 0 进度的空轨道;播放中也没有 buffering 态
|
||||
- `lib/pages/player/widgets/seek_progress_bar.dart`(全屏播放页进度条)
|
||||
- 未初始化时 `Slider` 处于 disabled,静态空轨道;没有 buffering 态
|
||||
`lib/core/theme/app_dimens.dart`:
|
||||
|
||||
### 实现
|
||||
- `navIcon = 20`
|
||||
- `navLabel = 10`
|
||||
- `navHeight = 64`
|
||||
|
||||
1. **去掉封面占位**
|
||||
- `PlayerVideoSurface` 删除 `posterUrl` 参数与 `_FallbackBackground` 里的 `RemoteImage` / 遮罩,
|
||||
未就绪时只渲染纯黑 `ColoredBox`(保留 key `player-fallback-background`)
|
||||
- 删除不再需要的 `remote_image.dart` 引用
|
||||
- `player_view.dart` 调用处去掉 `posterUrl:`
|
||||
`AppBottomNav` 里图标与文字间距 `SizedBox(height: 2)`。
|
||||
|
||||
2. **新增公共加载轨道** `lib/pages/player/widgets/loading_progress_track.dart`
|
||||
- `LoadingProgressTrack({required double height, Color trackColor = Colors.white24, Color highlightColor = AppColors.blue, Key? key})`
|
||||
- 轨道铺满宽度;一段约 28% 宽的主题色高光从左到右循环滑动
|
||||
(`AnimationController` 1200ms `repeat()`,`Curves.easeInOut`)
|
||||
- 整体挂 `Key('progress-loading')`,高度与所在进度条一致,避免布局跳动
|
||||
### 改动
|
||||
|
||||
3. **首页 feed 进度条**(`_FeedProgressBar`)
|
||||
- `controller == null` → 直接渲染 `LoadingProgressTrack`(高度 `widget.height`,外层保持 `hitHeight` 手势区),不显示滑块/拇指
|
||||
- 播放中 `value.isBuffering == true` → 同样渲染加载轨道(隐藏已播进度与白色圆点)
|
||||
- 其余情况保持现有可拖动进度条
|
||||
|
||||
4. **全屏播放页进度条**(`SeekProgressBar._buildTrack`)
|
||||
- `!video.isInitialized || video.isBuffering` → 用 `LoadingProgressTrack` 替换 `Slider`
|
||||
(高度沿用 compact/普通两种非拖动高度,隐藏时间文案)
|
||||
- 其余情况保持现有 Slider 与拖动逻辑
|
||||
|
||||
### 测试
|
||||
|
||||
- 更新 `test/player/player_video_surface_test.dart`、`test/player/player_fullscreen_test.dart`:
|
||||
不再断言 `player-fallback-cover` / `player-fallback-scrim`,改为断言 `player-fallback-background` 为纯黑
|
||||
- 新增 `test/player/loading_progress_track_test.dart`:渲染后存在 `progress-loading`,pump 一段时间后动画仍在运行(可用 `tester.pump` 两次断言位置变化)
|
||||
- `SeekProgressBar` 增加用例:`valueListenable == null` 或 buffering 值时出现 `progress-loading`,正常播放时出现 `Slider`
|
||||
1. `lib/core/theme/app_dimens.dart`
|
||||
- `navIcon`:`20` → `24`
|
||||
- `navLabel`:`10` → `12`
|
||||
- `navHeight`:`64` → `68`
|
||||
2. `lib/core/widgets/app_bottom_nav.dart`
|
||||
- 图标与文字间距 `2` → `3`,其余布局不变(四等分、选中态主题色、深色/浅色两种底不变)
|
||||
3. `test/theme/app_dimens_test.dart`
|
||||
- 断言同步为 `navLabel = 12`、`navHeight = 68`(如断言了 `navIcon` 一并更新)
|
||||
|
||||
### 验收
|
||||
|
||||
- 门禁:`dart analyze lib test` 零告警、`flutter test` 全过、`flutter build apk --debug` 成功。
|
||||
- 真机自查:冷启动进入 feed 时视频区纯黑、底部进度条有高光跑动;弱网卡顿时进度条切回高光跑动。
|
||||
- 空间检查:`navHeight 68` 下 24 图标 + 3 间距 + 12 文字垂直居中不溢出
|
||||
- 门禁:`dart analyze lib test` 零告警、`flutter test` 全过、`flutter build apk --debug` 成功
|
||||
|
||||
### Git
|
||||
|
||||
- 从 `develop` 拉 `feat/progress-loading-state`。
|
||||
- 提交:`feat(player): 未就绪改由进度条展示加载态`,作者 `Zhou Weidong <502333560@qq.com>`。
|
||||
- `--no-ff` 合回 `develop` 并 push;`FruitServer/docs/plans/PROGRESS.md` 追加 K77-A 留痕。
|
||||
- 从 `develop` 拉 `feat/bottom-nav-larger`。
|
||||
- 提交:`feat(nav): 底部导航图标与文字放大`,作者 `Zhou Weidong <502333560@qq.com>`。
|
||||
- `--no-ff` 合回 `develop` 并 push;`FruitServer/docs/plans/PROGRESS.md` 追加 K78-A 留痕。
|
||||
|
||||
### 约束
|
||||
|
||||
- 全程中文;禁止 `git add -A`;不改其它页面与交互;完成后停住等待验收。
|
||||
- 全程中文;禁止 `git add -A`;只动导航尺寸与相关断言;完成后停住等待验收。
|
||||
@@ -22709,3 +22709,31 @@ Running Gradle task 'assembleDebug'...
|
||||
```
|
||||
|
||||
解读:静态检查零告警,486 条测试全部通过,debug APK 构建成功。真机验收由用户执行。
|
||||
|
||||
## 2026-10-21 ReelShort:K78-A 底部导航图标与文字放大
|
||||
|
||||
- 前置状态:K77-A 已完成并合并,develop 合并提交 `0ba6ea9`。
|
||||
- 分支:`feat/bottom-nav-larger`
|
||||
- 功能提交:`d6b2d30 feat(nav): 底部导航图标与文字放大`
|
||||
- develop 合并提交:`7270863 merge: 合并 K78-A 底部导航放大`,已推送 `0ba6ea9..7270863`。
|
||||
- `AppDimens.navIcon` 由 20 调整为 24,`navLabel` 由 10 调整为 12,`navHeight` 由 64 调整为 68。
|
||||
- `AppBottomNav` 图标与文字间距由 2 调整为 3;四等分布局、选中态、浅色与深色底均未改动。
|
||||
- 尺寸测试同步增加 `navIcon = 24` 断言,并更新 `navLabel = 12`、`navHeight = 68`。
|
||||
|
||||
门禁原始输出:
|
||||
|
||||
```text
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
|
||||
$ flutter test
|
||||
00:50 +486: All tests passed!
|
||||
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'...
|
||||
14.3s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
解读:静态检查零告警,486 条测试全部通过,debug APK 构建成功。真机验收由用户执行。
|
||||
Reference in new issue
Block a user