3.6 KiB
3.6 KiB
INBOX
[已处理] K77-A 视频未就绪不再显示封面,改由进度条表示加载
需求
- 视频还没加载出来时不显示封面,视频区保持纯黑。
- 加载中(首帧未就绪 / 中途 network buffering)用进度条本身做加载状态: 轨道上跑一段主题色高光,不要静态空进度条。
现状
lib/pages/player/widgets/player_video_surface.dart_FallbackBackground会渲染RemoteImage(posterUrl)+ 黑色遮罩(keyplayer-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 态
- 未初始化时
实现
-
去掉封面占位
PlayerVideoSurface删除posterUrl参数与_FallbackBackground里的RemoteImage/ 遮罩, 未就绪时只渲染纯黑ColoredBox(保留 keyplayer-fallback-background)- 删除不再需要的
remote_image.dart引用 player_view.dart调用处去掉posterUrl:
-
新增公共加载轨道
lib/pages/player/widgets/loading_progress_track.dartLoadingProgressTrack({required double height, Color trackColor = Colors.white24, Color highlightColor = AppColors.blue, Key? key})- 轨道铺满宽度;一段约 28% 宽的主题色高光从左到右循环滑动
(
AnimationController1200msrepeat(),Curves.easeInOut) - 整体挂
Key('progress-loading'),高度与所在进度条一致,避免布局跳动
-
首页 feed 进度条(
_FeedProgressBar)controller == null→ 直接渲染LoadingProgressTrack(高度widget.height,外层保持hitHeight手势区),不显示滑块/拇指- 播放中
value.isBuffering == true→ 同样渲染加载轨道(隐藏已播进度与白色圆点) - 其余情况保持现有可拖动进度条
-
全屏播放页进度条(
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
验收
- 门禁:
dart analyze lib test零告警、flutter test全过、flutter build apk --debug成功。 - 真机自查:冷启动进入 feed 时视频区纯黑、底部进度条有高光跑动;弱网卡顿时进度条切回高光跑动。
Git
- 从
develop拉feat/progress-loading-state。 - 提交:
feat(player): 未就绪改由进度条展示加载态,作者Zhou Weidong <502333560@qq.com>。 --no-ff合回develop并 push;FruitServer/docs/plans/PROGRESS.md追加 K77-A 留痕。
约束
- 全程中文;禁止
git add -A;不改其它页面与交互;完成后停住等待验收。