3.0 KiB
3.0 KiB
[已处理] 2026-10-20 | K31-A 播放页长按手势:中间更多 / 两侧清屏+2 倍速(仅 App 端)
用户指令(2026-10-20,原文):
「接下来做 长按屏幕中间弹出更多弹窗 长按屏幕两侧清屏开启2倍速 但是要保留进度条 先不要上滑锁定倍速」
参考图:用户提供截图(20261020-123247.jpg)——长按两侧时画面清屏,仅保留底部进度条,进度条上方居中显示橙色「▸ 2.0 倍速快进中」;截图中的「上滑锁定倍速」本次明确不做。
现状
lib/pages/player/widgets/player_overlay.dart的player-video-tap为全屏GestureDetector,只有onTap切播放/暂停,没有长按手势。_chromeVisible控制清屏;清屏时只隐藏右侧 rail 与底部文案,进度条始终显示(符合「保留进度条」)。- 倍速由
_PlayerPageState._playbackSpeed+logic.setPlaybackSpeed(double)驱动,顶部倍速入口与更多弹窗都走这两个入口。
口径(只改 Flutter,不动后端、不改接口)
- 手势分区(以屏幕宽度为基准,全屏浮层
player-video-tap内判定):- 中间 1/3(
width/3 ~ 2*width/3)长按:弹出「更多」弹窗,复用现有_openMore(context, episode);不得改变播放/暂停状态。 - 左侧 1/3 与右侧 1/3 长按:进入「加速态」。
- 中间 1/3(
- 加速态行为:
- 立即切到 2.0 倍速(
logic.setPlaybackSpeed(2.0)并同步_playbackSpeed); - 进入清屏(隐藏右侧 rail 与底部文案),进度条保留可见;
- 进度条上方居中显示提示
Key('player-speed-boost-hint'):橙色(AppColors.blue)小三角图标 + 文案「2.0 倍速快进中」,字号 13、w700、带播放器文字阴影; - 松手或手势取消后:恢复长按前的倍速与清屏状态(本来清屏则保持清屏,本来非清屏则恢复控件),并隐藏提示。
- 立即切到 2.0 倍速(
- 不做「上滑锁定倍速」,也不做左右分区差异化倍速;首页沉浸流(homeMode)不加此手势。
- 需要新增 l10n 文案 key:
speedBoosting,占位符speed(如2.0):- zh:「{speed} 倍速快进中」
- en:「{speed}x speed」
- id:「{speed}x kecepatan」
同步三份 arb 并执行
flutter gen-l10n生成,不手改生成文件以外的方式绕过。
- 模型扩展:
PlayerOverlayData增加required bool boosting;PlayerOverlayActions增加required VoidCallback onLongPressCenter、onBoostStart、onBoostEnd。
测试/门禁
- 新增用例:中间长按弹出更多弹窗;左侧长按出现
player-speed-boost-hint、进度条仍可见、倍速变 2.0;松手后提示消失、倍速与清屏状态恢复;长按不改播放状态。 dart analyze lib test零告警 +flutter test全过 +flutter build apk --debug。
流程:从 develop 拉 feature/flutter-k31-longpress;作者 Zhou Weidong <502333560@qq.com>;--no-ff 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。