37 lines
3.0 KiB
Markdown
37 lines
3.0 KiB
Markdown
## [已处理] 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 留痕;真机验收由用户执行。
|