diff --git a/docs/plans/INBOX.md b/docs/plans/INBOX.md index 5131112..fa89856 100644 --- a/docs/plans/INBOX.md +++ b/docs/plans/INBOX.md @@ -20,6 +20,68 @@ --- +## [待处理] 2026-10-19 | K27 播放器控制层交互重做:清屏按钮 + 取消自动隐藏 + 暂停按钮即时消失 + +**用户指令(2026-10-19,原文)**: +> 「现在播放页不对啊 不是点击播放或暂停 等一会所有的按钮都消失了 而是要要清屏按钮 点了清屏其他的才消失 点击暂停是点击一下 暂停 在点击下播放 暂停按钮消失这样」 + +**现状问题(Trae 勘察)** +- `player_view.dart` 的 `_PlaybackOverlayState` 有 `Timer? _hideTimer` + `_scheduleHide()`,2.5 秒后把 `_controlsVisible` 置 false,属于「等一会全部消失」。 +- 首页 `player_view.dart` 中 `shouldShowFeedPauseIndicator` 分支会在暂停后常驻一个中心播放按钮(`home-feed-center-play`)。 +- 播放页中心按钮 `player-play-toggle` 常驻,暂停后也不消失。 +- 首页 `HomeFeedOverlay` 没有清屏按钮;播放页顶栏只有返回 / 标题 / 更多。 + +### 一、控制层常驻(删除一切定时隐藏) + +1. `_PlaybackOverlayState` 删除 `Timer? _hideTimer`、`_scheduleHide()`、`initState/dispose` 中的定时器逻辑;`import 'dart:async'` 若无其它用途一并删除。 +2. `_controlsVisible` 只由用户显式动作改变:点「清屏」→ 隐藏;清屏状态下点画面 → 恢复。**不得有任何延时自动隐藏**。 +3. 进入播放页、切集、选集返回、PiP 返回时,控制层默认可见。 + +### 二、清屏按钮 + +**播放页(`_PlaybackOverlay`)** +1. 顶栏右侧、`player-more` 左侧新增清屏按钮,复用 `_TopAction`(36×36),Key `player-clear-screen`,图标 `Icons.fullscreen_rounded`。 +2. 点击后隐藏:顶栏(`player-controls-top`)、中心按钮、进度条、三按钮、评论卡、`1.0x` 角标;画面上只剩视频。 +3. 清屏状态下点击画面任意处 → 恢复控制层,**不切换播放/暂停**。 +4. tooltip 走 l10n 新增 key `clearScreen`,en/zh/id 三语必须齐全(en `Clear screen` / zh `清屏` / id `Bersihkan layar`)。 + +**首页沉浸 feed** +1. `HomeFeedOverlay` 顶栏在「搜索」与「更多」之间新增清屏按钮,Key `home-feed-clear-screen`,36×36 圆钮,样式复用 `_RoundIcon`。 +2. 点击后隐藏整个 HomeFeedOverlay(剧名行、右侧 rail、底部玻璃卡)、首页暂停提示与渐变遮罩,只留视频。 +3. 该显隐状态由 `player_view.dart` 持有(例如 `_feedChromeVisible`),清屏后点画面恢复,且不切换播放状态。 + +### 三、中心播放/暂停按钮 + +1. 播放中且控制层可见 → 中心显示暂停按钮(`PlayerCenterToggle(playing: true)`,Key `player-play-toggle`)。 +2. 点击中心暂停按钮 → 执行暂停,并且**该按钮立即消失**;不显示常驻的播放按钮。 +3. 暂停中点击画面 → 播放;恢复播放后中心暂停按钮随控制层恢复显示。 +4. 删除首页暂停后的常驻播放按钮分支(`shouldShowFeedPauseIndicator` / `home-feed-center-play`)。若 helper 及测试因此失效,一并删除并更新测试,不留死代码。 +5. 首页与播放页必须共用 `PlayerCenterToggle`,样式不得分叉。 + +### 四、保持不变 + +- 票据三态、进度条 seek、选集、评论、下一集、下载授权、PiP、倍数角标等既有逻辑不改。 +- 不新增第三方依赖;不改后端、不改 Web。 + +### 五、测试(先红后绿) + +更新/新增 widget test,至少覆盖: +1. 播放页初始控制层可见;`pump` 5 秒后 `player-controls-top` / `player-controls-bottom` 仍然存在(证明无自动隐藏)。 +2. 点 `player-clear-screen` → 顶栏、底部控制区、中心按钮都消失;点画面恢复,且播放态不变。 +3. 播放中中心暂停按钮存在;点击后播放态变为暂停且中心按钮消失;再点画面恢复播放。 +4. 首页点 `home-feed-clear-screen` → `home-feed-title`、`home-feed-info-card` 消失;点画面恢复。 +5. 既有全部测试通过(含 `player_fullscreen_test.dart`、`player_center_toggle_test.dart`)。 + +### 六、门禁与流程 + +- 从 `develop` 拉 `fix/flutter-player-clear-screen`。 +- 门禁:`dart analyze lib test` 零告警、`flutter test` 全过、`flutter build apk --debug`。 +- 完成后 `git checkout develop && git merge --no-ff` 并 push;提交身份 `Zhou Weidong <502333560@qq.com>`;禁用 `git add -A`。 +- 本批只做代码改造与本地门禁;**真机验证由用户执行**,Codex 不得自行真机验证,回执里给出用户可照做的验证步骤与每步预期结果。 +- 在 `docs/plans/PROGRESS.md` 追加留痕(命令 + 原始输出 + 解读)。 + +--- + ## [已完成·待用户验收] 2026-10-19 | K26 客户端按「移动端设计预览.html」校正六屏 **用户指令(2026-10-19)**:「现在看 移动端设计预览.html 按这个来」。