From 60fa96b789b384a833abf1b8e774cc81d4418697 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Wed, 21 Oct 2026 09:24:25 +0800 Subject: [PATCH] =?UTF-8?q?docs(plans):=20=E7=95=99=E7=97=95=20K75=20?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=B7=A1=E5=85=A5=E8=BD=AC=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/INBOX.md | 74 ++++++++++++++++++++++++++++++++---------- docs/plans/PROGRESS.md | 29 +++++++++++++++++ 2 files changed, 86 insertions(+), 17 deletions(-) diff --git a/docs/plans/INBOX.md b/docs/plans/INBOX.md index 3db85e1..66df3fe 100644 --- a/docs/plans/INBOX.md +++ b/docs/plans/INBOX.md @@ -1,33 +1,73 @@ # INBOX -## [已处理] K74-A 客户端开发默认地址改为本机地址 10.39.237.1 +## [已处理] K75-A 首页进详情 / 进播放页改为无感淡入 -### 背景 +### 需求 -当前 Mac 的 Wi-Fi 地址为 `10.39.237.1`(路由器 10.39.237.58),本机后端已重启并监听 8081, -`http://10.39.237.1:8081/app/categories` 返回 200。需要把客户端开发默认地址从公网改回本机。 +首页 feed: -### 改动 +1. 点短剧标题 → 详情页 +2. 点「观看完整剧集」→ 全屏播放页 -1. `lib/core/config/app_config.dart` - - `devHostBaseUrl` 改为 `'http://10.39.237.1:8081'`(不带结尾斜杠) - - 注释保持「换网络时只改这一行」的说明 - - 探测候选去重逻辑保持不变(当前 devHost 与 public 不同,`publicBaseUrl` 仍保留在候选里, - 顺序仍为 `127.0.0.1 → 10.39.237.1 → 公网`) -2. `test/config/server_endpoint_test.dart` - - 字面量断言同步改为 `'http://10.39.237.1:8081'` +现在都是默认的平台转场(iOS 从右往左滑入、Android 缩放),观感突兀。 +改成**无感淡入**:不加左右位移,只做短促的淡入 / 淡出。 + +### 现状 + +- `lib/pages/player/player_logic.dart` `openDetail()`:`MaterialPageRoute` → `DramaDetailPage` +- `lib/pages/player/open_player.dart` `playDramaFromCatalog()`:`MaterialPageRoute` → `PlayerPage` + (首页「观看完整剧集」走这里,筛选页 / 榜单等卡片也复用) +- `lib/pages/player/player_logic.dart` `openSeriesAt()`:`MaterialPageRoute` → `PlayerPage` + +### 实现 + +1. 新增 `lib/core/navigation/fade_page_route.dart`: + +```dart +// Author: fruit.com.cn + +import 'package:flutter/widgets.dart'; + +/// 无位移的淡入转场:用于首页 feed 进详情 / 播放页,避免平台左右滑入。 +class FadePageRoute extends PageRouteBuilder { + FadePageRoute({required WidgetBuilder builder, super.settings}) + : super( + transitionDuration: const Duration(milliseconds: 220), + reverseTransitionDuration: const Duration(milliseconds: 180), + pageBuilder: (context, _, __) => builder(context), + transitionsBuilder: (context, animation, _, child) => FadeTransition( + opacity: CurvedAnimation(parent: animation, curve: Curves.easeOut), + child: child, + ), + ); +} +``` + +2. 把上述三处 `MaterialPageRoute` 换成 `FadePageRoute`: + - `PlayerLogic.openDetail()` + - `playDramaFromCatalog()` + - `PlayerLogic.openSeriesAt()` + +3. 其它入口(登录页、我的、收藏、观看记录、发现页等)**保持原样**,本批不动。 + +### 测试 + +- 新增 `test/navigation/fade_page_route_test.dart`: + - push 后 `transitionDuration == 220ms`、`reverseTransitionDuration == 180ms` + - 转场过程中存在 `FadeTransition`,且 `opaque == true` +- 现有 player / home 相关测试必须继续通过(若有用例断言 `MaterialPageRoute` 类型,改为断言页面内容而不是路由类型) ### 验收 - 门禁:`dart analyze lib test` 零告警、`flutter test` 全过、`flutter build apk --debug` 成功。 -- 提供说明:该地址随网络变化,换网时只改 `devHostBaseUrl` 一行。 +- 真机自查:首页点标题进详情、点观看完整剧集进播放页,均为淡入无左右滑动;返回同样淡出。 ### Git -- 从 `develop` 拉 `chore/dev-host-local-ip`。 -- 提交:`chore(config): 开发默认地址改回本机 10.39.237.1`,作者 `Zhou Weidong <502333560@qq.com>`。 -- `--no-ff` 合回 `develop` 并 push;`FruitServer/docs/plans/PROGRESS.md` 追加 K74-A 留痕。 +- 从 `develop` 拉 `feat/fade-route-home-feed`。 +- 提交:`feat(player): 首页进详情与播放页改为淡入转场`,作者 `Zhou Weidong <502333560@qq.com>`。 +- `--no-ff` 合回 `develop` 并 push;`FruitServer/docs/plans/PROGRESS.md` 追加 K75-A 留痕。 ### 约束 -- 全程中文;禁止 `git add -A`;除上述两个文件外不改其它内容;完成后停住等待验收。 +- 全程中文;禁止 `git add -A`;只改上述范围;完成后停住等待验收。 diff --git a/docs/plans/PROGRESS.md b/docs/plans/PROGRESS.md index cf37428..838120b 100644 --- a/docs/plans/PROGRESS.md +++ b/docs/plans/PROGRESS.md @@ -22623,3 +22623,32 @@ Running Gradle task 'assembleDebug'... ``` 解读:静态检查零告警,482 条测试全部通过,debug APK 构建成功。该地址随网络变化,换网时只改 `devHostBaseUrl` 一行;真机验收由用户执行。 + +## 2026-10-21 ReelShort:K75-A 首页详情与播放页淡入转场 + +- 前置状态:K74-A 已完成并合并,develop 合并提交 `3a636ca`。 +- 分支:`feat/fade-route-home-feed` +- 功能提交:`8c04099 feat(player): 首页进详情与播放页改为淡入转场` +- develop 合并提交:`c0697c0 merge: 合并 K75-A 首页淡入转场`,已推送。 +- 新增 `FadePageRoute`:正向 220ms、反向 180ms,只通过 `FadeTransition` 改变透明度,无左右位移,路由保持 opaque。 +- `PlayerLogic.openDetail()`、`PlayerLogic.openSeriesAt()`、`playDramaFromCatalog()` 三处改用 `FadePageRoute`;登录、我的、收藏、观看记录、发现页等其它入口保持原路由。 + +测试:新增路由专项测试,锁定 220ms/180ms、opaque、转场中存在 FadeTransition 且透明度处于中间态;现有播放与首页测试全部保持通过。 + +门禁原始输出: + +```text +$ dart analyze lib test +Analyzing lib, test... +No issues found! + +$ flutter test +00:55 +483: All tests passed! + +$ flutter build apk --debug +Running Gradle task 'assembleDebug'... + 8.8s +✓ Built build/app/outputs/flutter-apk/app-debug.apk +``` + +解读:静态检查零告警,483 条测试全部通过,debug APK 构建成功。首页详情/播放页淡入效果等待真机验收。