docs(plans): 留痕 K31-B 首页频道与轮播改版
This commit is contained in:
1 parent
ccf12cac8c
commit
c9561edb63
2 files changed
+72
No files matched your search
@@ -1,3 +1,42 @@
|
||||
## [已处理] 2026-10-20 | K31-B 首页频道悬浮轮播图 + 轮播全宽直角 + 频道下划线选中(仅 App 端)
|
||||
|
||||
**用户指令(2026-10-20,原文)**:
|
||||
> 「现在改首页 上方的热门 免费 新剧 榜单 是悬浮在轮播图上的 轮播图宽度占满 不要圆角 而且上面的也不是圆角展示 选中的下方带横线标识即可」
|
||||
|
||||
**现状**
|
||||
- `lib/pages/home/home_browse_view.dart` 的 `_sections()` 顺序为:`_channels()`(ChoiceChip 胶囊行)→ `_hero()`(带左右 16 padding)→ 继续观看 → 频道标题 → 网格。
|
||||
- `_channels()` 用 `ChoiceChip` + `StadiumBorder` + `selectedColor: AppColors.blue`,是圆角胶囊选中态。
|
||||
- `_hero()` 外层有 `Padding(pageHorizontal)`,`FeedBannerCarousel` 的 `_bannerCard` 用 `ClipRRect` 圆角(hero 用 `AppDimens.heroBannerRadius`),点击层 `Material` 也带同款圆角。
|
||||
|
||||
**口径(只改 Flutter,不动后端、不改接口、不影响发现页)**
|
||||
1. 结构调整:把「频道行」叠加到轮播图上。新增 `_heroWithChannels()`:
|
||||
- `SizedBox(height: AppDimens.heroBannerHeight)` 内用 `Stack`;
|
||||
- 底层 `Positioned.fill(child: FeedBannerCarousel(...))`;
|
||||
- 顶层 `Positioned(top: 8, left: 0, right: 0, child: _channels(l10n, overImage: true))`。
|
||||
- 无 banner 时(`banners.isEmpty`)退化为普通频道行,放在网格上方,不叠加。
|
||||
2. 轮播图全宽直角(仅首页 hero):
|
||||
- `FeedBannerCarousel` 增加可选参数 `flush`(默认 false,发现页行为不变);
|
||||
- `flush: true` 时 `_bannerCard` 的外层 `ClipRRect` 圆角为 0、点击层 `Material` 圆角为 0;
|
||||
- 首页 `_hero()` 去掉左右 `Padding`,让轮播贴屏幕左右边缘;
|
||||
- 发现页的 0.94 视口与圆角保持现状。
|
||||
3. 频道行改为下划线选中,不再用 `ChoiceChip`:
|
||||
- 结构:横向可滚动 `Row`/`ListView`,项间距 20,左右内边距 16,整行高 44;
|
||||
- 文字:选中 `fontSize 15 / w800`,未选中 `w600`;悬浮在图上时颜色为白色(未选中 `Colors.white70`,带播放器同款文字阴影),非叠加场景用 `AppColors.onSurface` / `AppColors.muted`;
|
||||
- 选中项文字下方 4px 处一条 `width 18 / height 2 / 圆角 1` 的横线,悬浮时白色、非叠加时 `AppColors.blue`;未选中项用同尺寸透明横线占位,避免切换时跳动;
|
||||
- Key 保持不变:整行 `home-channels`,每项 `home-channel-<hot|free|newReleases|ranking>`;横线新增 `home-channel-underline-<name>`。
|
||||
4. 交互与状态不变:点击仍然调用 `logic.selectChannel(...)`,选中频道影响下方网格与频道标题。
|
||||
5. `_sections()` 中 `_channels()` 从原位置移除,改为由 `_heroWithChannels()` 承载;无 banner 时才单独出现在网格上方。
|
||||
|
||||
**测试/门禁**
|
||||
- 同步改写 `test/home/k28_a_navigation_test.dart` 中基于 ChoiceChip 的断言:改为断言选中项横线可见/非选中项横线透明、颜色与字重符合上述口径,点击仍能切换频道;
|
||||
- 新增断言:`home-hero-banner` 宽度等于屏幕宽度(无左右 padding)、圆角为 0;频道行在 Stack 中位于轮播之上(可通过层级/位置断言);
|
||||
- 发现页轮播测试保持通过(`flush` 默认 false);
|
||||
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
|
||||
|
||||
**流程**:从 `develop` 拉 `feature/flutter-k31-home-channels`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
|
||||
|
||||
---
|
||||
|
||||
## [已处理] 2026-10-20 | K31-A 播放页长按手势:中间更多 / 两侧清屏+2 倍速(仅 App 端)
|
||||
|
||||
**用户指令(2026-10-20,原文)**:
|
||||
|
||||
@@ -20303,3 +20303,36 @@ Running Gradle task 'assembleDebug'...
|
||||
```
|
||||
|
||||
解读:静态检查零告警,400 条测试全部通过,debug APK 构建成功。工作区原有 `pubspec.lock` 变更未纳入本批提交。真机验收由用户执行。
|
||||
|
||||
## 2026-10-20 ReelShort:K31-B 首页频道悬浮轮播 + 全宽直角 + 下划线选中
|
||||
|
||||
- 分支:`feature/flutter-k31-home-channels`
|
||||
- 功能提交:`a24f1fa feat(flutter): 首页频道叠加轮播并改下划线选中`
|
||||
- develop 合并提交:`290b92c merge: 合并 K31-B 首页频道与轮播改版`,已推送。
|
||||
- `home_browse_view.dart`:新增 `_heroWithChannels()`,`SizedBox(heroBannerHeight)` 内 Stack,底层 `Positioned.fill` 放轮播、顶层 `Positioned(top:8)` 放频道行;无 banner 时退化为普通频道行。
|
||||
- 频道行去掉 ChoiceChip/StadiumBorder:44 高横向滚动,间距 20、左右 16;选中 15 号 w800、未选中 w600;图上白字(未选中 white70 + 阴影)、非叠加 onSurface/muted;选中下划线 18×2 圆角 1(图上白色、非叠加主色),未选中透明占位。Key 保持 `home-channels` / `home-channel-<name>`,新增 `home-channel-underline-<name>`。
|
||||
- `FeedBannerCarousel` 新增可选 `flush`(默认 false):首页 hero 传 `flush: true` 且去掉左右 padding,轮播宽度等于屏宽、ClipRRect 与点击层圆角均为 0;发现页保持 0.94 视口与原圆角。
|
||||
- 交互不变:点击仍调用 `logic.selectChannel`。
|
||||
|
||||
测试(改写 + 新增):
|
||||
- `should_switch_home_channel_when_underline_tab_is_tapped`:选中白色下划线/未选中透明、字重 800/600、图上文字 white/white70,点击后横线与字重切换。
|
||||
- `should_render_flush_hero_with_channels_overlaid`:`home-hero-banner` 宽 390=屏宽、left=0、ClipRRect 圆角 0,频道行位于 `home-hero-section` 内且 top=hero.top+8。
|
||||
- 发现页轮播、首页布局相关用例继续通过(flush 默认 false)。
|
||||
|
||||
门禁原始输出:
|
||||
|
||||
```text
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
|
||||
$ flutter test
|
||||
00:35 +401: All tests passed!
|
||||
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'...
|
||||
7.0s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
解读:静态检查零告警,401 条测试全部通过,debug APK 构建成功。工作区原有 `pubspec.lock` 变更未纳入本批提交。真机验收由用户执行。
|
||||
Reference in new issue
Block a user