Compare commits
4
Commits
aa54e03d52
...
fe2e179bdc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe2e179bdc | ||
|
|
73292ba74d | ||
|
|
f97574b57e | ||
|
|
2a06190cfe |
No files matched your search
@@ -0,0 +1,63 @@
|
||||
# 2026-10-17 K11 首页网格 3 列 + 分类首位「全部」
|
||||
|
||||
## 一、目标与边界
|
||||
|
||||
在 K9 首页「全部剧目」网格上做最小修订:每行从 2 个改为 3 个,分类首个仍绑定
|
||||
`CategoryController.allCode`,文案改为「全部 / All / Semua」。
|
||||
|
||||
- 客户端分支:`feature/flutter-k11-home-grid-3col`,基线 `develop 0466b4b`。
|
||||
- 文档分支:`docs/k11-home-grid-3col`,FruitServer 基线任务书 `2a06190`。
|
||||
- 不改轮播、空态、三态、数据源、接口、分页或其他页面。
|
||||
- 不跑真机;设备侧 3 列布局、分类切换和详情跳转由用户验收。
|
||||
|
||||
## 二、实现方案
|
||||
|
||||
1. `home_drama_grid.dart`:
|
||||
- `crossAxisCount: 3`
|
||||
- `mainAxisSpacing: 14`
|
||||
- `crossAxisSpacing: 10`
|
||||
- `childAspectRatio: 2 / 3` 不变
|
||||
2. 3 列下卡片仍只保留标题最多 2 行、类型最多 1 行;由现有 `Text` 的
|
||||
`maxLines` / `ellipsis` 保证不溢出。
|
||||
3. `discover_view.dart` 分类第一项 code 保持 `CategoryController.allCode`,
|
||||
label 从 `l10n.forYou` 改为 `l10n.all`。
|
||||
4. 已核对三份 ARB 已存在 `all` key:
|
||||
- en:All
|
||||
- zh:全部
|
||||
- id:Semua
|
||||
|
||||
因此直接复用现有 l10n,不重复插入 JSON key;热门、最新和服务端分类顺序不变。
|
||||
|
||||
## 三、测试
|
||||
|
||||
- 更新 K9 网格断言:`crossAxisCount == 3`、`crossAxisSpacing == 10`、
|
||||
`mainAxisSpacing == 14`、比例仍为 2/3。
|
||||
- 新增首个分类 chip 文案断言为 `All`;切换分类时仍能更新网格。
|
||||
- K9/K10 既有测试保留,不删除用例;只更新本次行为明确变化的参数断言。
|
||||
- 组件/页面空态测试保持通过。
|
||||
|
||||
## 四、影响文件
|
||||
|
||||
- `ReelShort/lib/pages/discover/widgets/home_drama_grid.dart`
|
||||
- `ReelShort/lib/pages/discover/discover_view.dart`
|
||||
- `ReelShort/test/discover/home_all_dramas_grid_test.dart`
|
||||
- `FruitServer/docs/plans/2026-10-17-K11.md`
|
||||
- `FruitServer/docs/plans/PROGRESS.md`
|
||||
- `FruitServer/docs/plans/INBOX.md`
|
||||
|
||||
## 五、门禁与 Git
|
||||
|
||||
1. 先更新测试取得与 3 列/全部文案相关的红灯。
|
||||
2. 实现后运行定向测试。
|
||||
3. 运行 `dart analyze lib test`、`flutter test`、`flutter build apk --debug`。
|
||||
4. 当前有 Android `flutter run` 会话,不主动终止;构建前检查进程,必要时使用
|
||||
独立工作区副本构建,避免争用原项目 `build/`。
|
||||
5. 完成后 `merge --no-ff` 回客户端 `develop` 并 push;FruitServer 文档同样
|
||||
合并推送。作者与提交者统一为
|
||||
`Zhou Weidong <502333560@qq.com>`。
|
||||
|
||||
## 六、风险与待确认
|
||||
|
||||
- 3 列后单卡宽度变窄,长标题和类型必须继续 ellipsis,不允许改变卡片结构。
|
||||
- 现有 `all` l10n 已具备三语,新增重复 key 会破坏 ARB;本批复用现有 key。
|
||||
- 用户正在运行的 Flutter `run` 不终止;APK 构建需隔离原 `build/`。
|
||||
+60
-1
@@ -20,7 +20,66 @@
|
||||
|
||||
---
|
||||
|
||||
## [已处理·待用户验收] 2026-10-17 | K10 统一空列表占位(EmptyState)
|
||||
## [已处理·待用户验收] 2026-10-17 | K11 首页网格 3 列 + 分类首位「全部」
|
||||
|
||||
**用户指令(2026-10-17)**:「现在改首页,一行显示 3 个,而且我要的全部是显示在分类的第一个」。
|
||||
|
||||
> 在 K9 已实现的 2 列网格基础上做最小修订,不改接口、不改业务逻辑、不动后端。
|
||||
|
||||
### 〇、开工前必读
|
||||
|
||||
1. K9 计划与实现(`lib/pages/discover/widgets/home_drama_grid.dart`、`discover_view.dart`)
|
||||
2. K5 主题 token
|
||||
3. 本 INBOX 条目
|
||||
|
||||
### 一、PM 已勘察的现状(实测)
|
||||
|
||||
- `lib/pages/discover/widgets/home_drama_grid.dart`:`SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, mainAxisSpacing: 16, crossAxisSpacing: 12, childAspectRatio: 2/3)`。
|
||||
- `lib/pages/discover/discover_view.dart:273`:分类 chips 第一项为 `(code: CategoryController.allCode, label: l10n.forYou)`(文案「为你推荐」)。
|
||||
- 其余(轮播、空态、三态)保持 K9/K10 现状。
|
||||
|
||||
### 二、本批范围
|
||||
|
||||
1. **网格改 3 列**:`crossAxisCount: 3`;`mainAxisSpacing: 14`、`crossAxisSpacing: 10`,`childAspectRatio` 保持 `2/3`;3 列下标题最多 2 行、分类 1 行,避免溢出。
|
||||
2. **分类首位改「全部」**:chips 第一项仍使用 `allCode`,文案改为新增 l10n `all`(中文「全部」/ English「All」/ Bahasa Indonesia「Semua」);保留「热门 / 最新 / 服务端分类」顺序不变。
|
||||
3. **同步测试**:
|
||||
- 更新/新增断言 `crossAxisCount == 3`;
|
||||
- 断言分类 chips 第一项文案为「全部」(按 locale);
|
||||
- 既有 K9/K10 测试不得删改致绿。
|
||||
4. **不做**:不改轮播、空态、三态、数据源、接口、其他页面;不新增分页。
|
||||
|
||||
### 三、门禁与 Git
|
||||
|
||||
- `dart analyze lib test` 零告警;`flutter test` 全过;`flutter build apk --debug` 通过(当前有 Android 真机 `flutter run` 在跑,构建前先确认没有并发构建占用 `build/`)。
|
||||
- 从干净 `develop` 拉 `feature/flutter-k11-home-grid-3col`;完成后 `git merge --no-ff` 回 `develop` 并 push;不动 `main`。
|
||||
- 先写 `FruitServer/docs/plans/2026-10-17-K11.md`;每步「叙述 + 命令 + 原始输出 + 解读」追加到 `PROGRESS.md`;完成后停住写回执。
|
||||
- 提交作者与提交者统一 `Zhou Weidong <502333560@qq.com>`。
|
||||
|
||||
### 五、K11 完成回执(2026-10-17)
|
||||
|
||||
**结论**:首页网格已改为 3 列,分类首项仍绑定 `CategoryController.allCode`,
|
||||
文案改为「全部 / All / Semua」。未改轮播、空态、三态、数据源、接口或其他页面;
|
||||
未跑真机。
|
||||
|
||||
- 客户端分支 `feature/flutter-k11-home-grid-3col` 从 `0466b4b` 完成并
|
||||
`--no-ff` 合并;功能提交 `f0db631`,合并提交 `b5a8656`,已推送
|
||||
`0466b4b..b5a8656 develop`。
|
||||
- `crossAxisCount: 3`、`mainAxisSpacing: 14`、`crossAxisSpacing: 10`,
|
||||
`childAspectRatio: 2 / 3` 保持不变。
|
||||
- 三份 ARB 原本已有 `all` key,分别为 All / 全部 / Semua,本轮直接复用,
|
||||
未插入重复 JSON key。
|
||||
- K9 网格测试更新为 3 列并断言「全部」位于「热门」之前;两个既有首页壳层
|
||||
用例只把旧分类文案断言改为「All/全部」,导航流程和用例均保留。
|
||||
- `dart analyze lib test` 零告警;`flutter test` 为
|
||||
`00:18 +302 ~1: All tests passed!`;Android debug APK 在独立副本中构建成功。
|
||||
|
||||
用户真机验证步骤与逐步预期、原始输出见
|
||||
`docs/plans/PROGRESS.md`「27. K11 首页 3 列与全部分类」。
|
||||
设备侧 3 列布局、分类切换与详情跳转验收由用户执行。
|
||||
|
||||
---
|
||||
|
||||
## [待处理] 2026-10-17 | K10 统一空列表占位(EmptyState)
|
||||
|
||||
**用户指令(2026-10-17)**:「做空列表的占位图,所有的列表,要求简单大方、符合审美」。
|
||||
|
||||
|
||||
@@ -2359,6 +2359,142 @@ Running Gradle task 'assembleDebug'... 6.9s
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-17 K11 首页 3 列与全部分类
|
||||
|
||||
### 27.1 范围、分支与计划
|
||||
|
||||
叙述:在 K9 首页「全部剧目」网格上做最小修订,每行 3 个,分类首项从
|
||||
`For You` 改为「全部」。只改网格参数、首个分类 label 和对应测试。
|
||||
|
||||
- 客户端分支:`feature/flutter-k11-home-grid-3col`,基线 `0466b4b`。
|
||||
- 文档分支:`docs/k11-home-grid-3col`,基线任务书 `2a06190`。
|
||||
|
||||
开工前先写并提交计划:
|
||||
|
||||
```text
|
||||
f97574b docs(plans): 增加 K11 首页三列网格实施计划
|
||||
```
|
||||
|
||||
### 27.2 先红:3 列与全部文案
|
||||
|
||||
先更新 K9 网格测试的期望值并执行:
|
||||
|
||||
```text
|
||||
$ flutter test test/discover/home_all_dramas_grid_test.dart
|
||||
Expected: exactly one matching candidate
|
||||
Actual: _TextWidgetFinder:<Found 0 widgets with text "All": []>
|
||||
|
||||
00:01 +0 -1: Some tests failed.
|
||||
```
|
||||
|
||||
解读:分类首项仍显示旧文案,3 列断言在首个失败处之后尚未执行;红灯与 K11
|
||||
目标一致。
|
||||
|
||||
### 27.3 实现
|
||||
|
||||
`home_drama_grid.dart`:
|
||||
|
||||
```text
|
||||
crossAxisCount: 3
|
||||
mainAxisSpacing: 14
|
||||
crossAxisSpacing: 10
|
||||
childAspectRatio: 2 / 3
|
||||
```
|
||||
|
||||
`discover_view.dart`:
|
||||
|
||||
```text
|
||||
(code: CategoryController.allCode, label: l10n.all)
|
||||
```
|
||||
|
||||
已核对三份 ARB 原本已有 `all`:
|
||||
|
||||
```text
|
||||
lib/l10n/app_en.arb:49: "all": "All",
|
||||
lib/l10n/app_zh.arb:49: "all": "全部",
|
||||
lib/l10n/app_id.arb:49: "all": "Semua",
|
||||
```
|
||||
|
||||
解读:直接复用现有三语 getter,未添加重复 JSON key,也未改动 l10n 生成文件。
|
||||
|
||||
### 27.4 定向绿灯
|
||||
|
||||
```text
|
||||
$ flutter test test/discover/home_all_dramas_grid_test.dart
|
||||
00:01 +5: All tests passed!
|
||||
```
|
||||
|
||||
测试同时断言:
|
||||
|
||||
- `crossAxisCount == 3`
|
||||
- `crossAxisSpacing == 10`
|
||||
- `mainAxisSpacing == 14`
|
||||
- `childAspectRatio == 2/3`
|
||||
- 首个 chip 为 `All`,且位于 `Hot` 左侧
|
||||
- 320px 小屏 3 列布局无溢出
|
||||
|
||||
两个既有首页壳层用例仍保留,只更新旧分类断言:
|
||||
|
||||
```text
|
||||
$ flutter test test/widget_test.dart
|
||||
00:05 +17: All tests passed!
|
||||
```
|
||||
|
||||
### 27.5 全量门禁与构建
|
||||
|
||||
```text
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
```
|
||||
|
||||
```text
|
||||
$ flutter test
|
||||
00:18 +302 ~1: All tests passed!
|
||||
```
|
||||
|
||||
解读:302 项通过,1 项联调测试因客户端接口服务未启动按设计跳过。
|
||||
|
||||
用户 Android `flutter run` 仍在运行,未终止该会话。为避免争用原项目
|
||||
`build/`,将当前工作区同步到独立临时副本后执行:
|
||||
|
||||
```text
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'... 21.8s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
### 27.6 Git
|
||||
|
||||
```text
|
||||
f0db631 feat(flutter): 首页网格改为三列并首位显示全部
|
||||
b5a8656 merge: 合并 K11 首页三列网格
|
||||
0466b4b..b5a8656 develop -> develop
|
||||
```
|
||||
|
||||
功能提交与合并提交 author/committer 均为
|
||||
`Zhou Weidong <502333560@qq.com>`。
|
||||
|
||||
### 27.7 用户真机验证步骤与预期
|
||||
|
||||
以下设备侧取证由用户执行,Codex 未跑真机。
|
||||
|
||||
1. 使用最新客户端 `develop` 进入首页。
|
||||
预期:分类 chips 第一项显示「全部 / All / Semua」,其后仍是热门、最新和
|
||||
服务端分类。
|
||||
2. 查看「全部剧目」列表。
|
||||
预期:每行 3 个剧目,列间距 10、行间距 14,左右边距保持 16。
|
||||
3. 检查长标题和类型。
|
||||
预期:标题最多 2 行、类型最多 1 行,不横向或纵向溢出。
|
||||
4. 点击「全部」及其他分类。
|
||||
预期:网格内容按现有逻辑更新,点击卡片仍进入对应详情。
|
||||
5. 在 320px 宽设备或小屏模拟器滚动列表。
|
||||
预期:3 列布局稳定,无卡片重叠或整页溢出。
|
||||
|
||||
设备侧截图、滚动和分类切换结果由用户执行。
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-17 iOS 构建阻塞:固定 shared_preferences_foundation 2.5.6
|
||||
|
||||
### 25.1 现象与根因
|
||||
|
||||
Reference in new issue
Block a user