观影/联系人详情卡补内置蒙版 (#78)

用户:电影这个框弹出来的时候,应该在下面盖一层蒙版吧?跟近期任务类似。

首页各浮层里只有这两张卡没有遮罩:FbTaskPanel / FbDayEditSheet 都是组件内部
根 Stack 自带遮罩+卡片,而 FbMovieDetailSheet / FbPersonSheet 两处漏了,
卡片直接浮在正文上,底下的片名、影院、联系人名字透出来。

改法(按项目既有约定:谁铺满全屏,谁负责画遮罩):
- FbMovieDetailSheet.build 根节点 Column -> Stack,前面插全屏 FB_MASK 遮罩,
  onClick 关闭;卡片容器保持铺满+居中且 HitTestMode.Transparent;
- FbPersonSheet.build 同样套一层 Stack + 遮罩(embedded 分支跳过,
  那种形态宿主是 bindSheet,系统已有遮罩,再叠就是双暗);
- 宿主 FbHomePage 不再包遮罩,只留注释说明。

原因:组件根节点自己铺满全屏,会在外面先吃掉点击 —— 宿主包遮罩会
蒙版看着有、点它关不掉;包两层还会越点越黑(本轮真机实测踩到)。

验证(真机 5NC0225B27004718):
- 弹卡后卡片外像素 (247,243,234) -> (147,146,141),反推 alpha=0.40 = 0x66/255;
- 卡片内海报 (230,212,188) 不受影响;
- 点遮罩后恢复 (247,243,234),卡片关闭;
- 联系人卡同样三条全过;hvigorw assembleHap BUILD SUCCESSFUL。
This commit is contained in:
2026-11-06 07:35:47 +08:00
parent 4e3038a0aa
commit a7947f31be
3 changed files with 119 additions and 63 deletions
+12 -2
View File
@@ -2125,7 +2125,14 @@ export struct FbHomePage {
/* 🔴 用户:「"最近观影"点了之后没反应…点了之后应该有反应,
要么弹出来详细信息。」
⚠️ 复用电影页的同一张卡(`FbMovieDetailSheet`),
不为首页另写一套 —— 否则改一处要改两处。 */
不为首页另写一套 —— 否则改一处要改两处。
🔴 用户 2026-11-06:「电影这个框弹出来的时候,应该在下面盖一层蒙版吧?
跟近期任务类似。」
⇒ 蒙版由**组件自己**提供(`FbMovieDetailSheet` 内部根 Stack:
遮罩 + 卡片叠着),与 `FbTaskPanel` / `FbDayEditSheet` 同一做法。
**宿主这里不要再包一层** —— 包了就是两层暗色叠在一起(越点越黑),
而且点遮罩时会被组件自己的全屏根节点拦掉,关不掉。 */
if (this.mvDetail !== null || this.mvDetailLoading
|| this.mvDetailError !== '') {
FbMovieDetailSheet({
@@ -2145,7 +2152,10 @@ export struct FbHomePage {
// ==================== #64:联系人详情(可打电话)====================
/* 🔴 用户:「点击之后弹出来详细信息,就跟名册里面那个人的列表
点击完之后的效果是一样的,这样可以直接打电话。」
⚠️ 复用名册那张卡(`FbPersonSheet`),它自带手机号拨号入口。 */
⚠️ 复用名册那张卡(`FbPersonSheet`),它自带手机号拨号入口。
🔴 2026-11-06 同一条:蒙版同样由组件自己提供(`FbPersonSheet` 内部根
Stack:遮罩 + 卡片)。宿主不包 —— 理由同上一段。 */
if (this.pfDetail !== null) {
FbPersonSheet({
person: this.pfDetail,