Files
FruitServer/docs/plans/INBOX.md
T

3.0 KiB
Raw Blame History

[已处理] 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,不动后端、不改接口)

  1. 手势分区(以屏幕宽度为基准,全屏浮层 player-video-tap 内判定):
    • 中间 1/3(width/3 ~ 2*width/3)长按:弹出「更多」弹窗,复用现有 _openMore(context, episode);不得改变播放/暂停状态。
    • 左侧 1/3 与右侧 1/3 长按:进入「加速态」。
  2. 加速态行为:
    • 立即切到 2.0 倍速(logic.setPlaybackSpeed(2.0) 并同步 _playbackSpeed);
    • 进入清屏(隐藏右侧 rail 与底部文案),进度条保留可见;
    • 进度条上方居中显示提示 Key('player-speed-boost-hint'):橙色(AppColors.blue)小三角图标 + 文案「2.0 倍速快进中」,字号 13、w700、带播放器文字阴影;
    • 松手或手势取消后:恢复长按前的倍速与清屏状态(本来清屏则保持清屏,本来非清屏则恢复控件),并隐藏提示。
  3. 不做「上滑锁定倍速」,也不做左右分区差异化倍速;首页沉浸流(homeMode)不加此手势。
  4. 需要新增 l10n 文案 key:speedBoosting,占位符 speed(如 2.0):
    • zh:「{speed} 倍速快进中」
    • en:「{speed}x speed」
    • id:「{speed}x kecepatan」 同步三份 arb 并执行 flutter gen-l10n 生成,不手改生成文件以外的方式绕过。
  5. 模型扩展:
    • 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 留痕;真机验收由用户执行。