From 93af19e548b3713adcfe294f8f95b57af6289301 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Sat, 17 Oct 2026 16:07:05 +0800 Subject: [PATCH] =?UTF-8?q?docs(plans):=20K6=20=E5=A2=9E=E5=8A=A0=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E9=9C=87=E5=8A=A8=E5=8F=8D=E9=A6=88=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/INBOX.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/plans/INBOX.md b/docs/plans/INBOX.md index 2434f16..23e0d36 100644 --- a/docs/plans/INBOX.md +++ b/docs/plans/INBOX.md @@ -44,7 +44,7 @@ - 现有 Key:`home-tabs-bar`、`tab-discover`、`tab-home`、`tab-my-list`、`tab-my`,**测试依赖,不得改名**。 - 播放沉浸模式(`videoImmersive`)下隐藏导航,需保留。 -### 二、本批范围(2 块,按顺序做) +### 二、本批范围(3 块 + 测试验收,按顺序做) #### K6-A 登录页 UI 优化 @@ -65,11 +65,26 @@ - **保持**:4 个 tab 的数量、顺序、导航逻辑与全部 Key 不变;播放沉浸模式仍隐藏导航。 - **不做**:新增 tab、改信息架构、改页面内容。 -#### K6-C 测试与验收 +#### K6-C 点击震动反馈 + +> specs 无触觉反馈规范;此为用户 2026-10-17 明确指令,按下方口径执行。客户端当前 `HapticFeedback` 调用数为 0。 + +- 使用 Flutter 内置 `HapticFeedback`(`package:flutter/services.dart`),**不引入第三方插件**。 +- 统一封装 `lib/core/platform/haptics.dart`(如 `Haptics` 抽象 + 默认实现),页面通过依赖注入调用,便于 widget 测试替换为 fake;禁止在页面里散落直接调用静态 `HapticFeedback.*`。 +- 触发范围(克制,只做关键操作): + - 底部导航 tab 切换:`selectionClick()`; + - 主操作按钮成功触发时:登录/注册提交、收藏/取消收藏、点赞/取消点赞、评论发送、举报提交、下载授权申请:`lightImpact()`; + - 危险操作确认(清空观看记录、清空下载、删除记录/授权):`mediumImpact()`。 +- 不在普通列表项点击、滚动、页面切换上震动;不新增「震动开关」设置项(避免超出本批)。 +- 调用不阻塞 UI:`unawaited(...)`;异常不得影响业务(触觉不可用时静默忽略,禁止空 catch 之外的吞错写法)。 +- 真机验收:iPhone 上逐项可感知;iOS 低电量模式会自动禁用触觉,验收时确认未处于低电量模式。 + +#### K6-D 测试与验收 - widget 测试至少覆盖: - 底部导航 4 个 Key 存在、选中态随 tab 切换、沉浸模式下隐藏; - 登录页密码显隐切换、提交中按钮禁用、错误提示展示、键盘 next/done 焦点流转(可用 `tester.testTextInput`); + - 震动反馈:用 fake `Haptics` 断言 tab 切换触发 `selectionClick`、主操作触发 `lightImpact`、危险操作确认触发 `mediumImpact`,且普通列表点击不触发; - 无新增硬编码色值(沿用 K5 的扫描测试口径)。 - 深色主题、小屏(iPhone SE 级别)、键盘弹出三种场景不溢出。 - 真机验收由用户执行:登录页视觉与交互、底部导航选中态与安全区。