Files
FruitServer/docs/plans/INBOX.md
T

37 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## [已处理] 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 留痕;真机验收由用户执行。