laoyang
9bf21cd853
修「点头像没反应」:FbPersonSheet 塞进 bindSheet 会被立刻关掉(宿主契约冲突)
真机验证时抓到 —— 三条里第 ① 条第一轮**完全没用**:
点头像什么都不出来。每次点击日志都出现一组:
AceSheet: radius is not correct type
AceDrag: Drag gesture has been canceled ← 浮层起来立刻被取消
⇒ sheet **确实创建了**,但被测量失败关掉;界面上看就是"点了没反应"。
(我第一轮据此误判成 "onClick 没接上",白查了一轮点击链路 —— 点击是好的。)
根因:FbPersonSheet 的根节点是
Column() { /* 92% 宽的圆角卡 */ }
.width('100%').height('100%').justifyContent(FlexAlign.Center)
—— "铺满全屏 + 内部居中",因为它的**设计宿主**是
"页面里叠一层遮罩 + Stack 居中"(名册页、日程页都这么用)。
而 bindSheet 要求内容**按自身高度自适应** ⇒
"内容要铺满 100% 高" vs "sheet 要按内容定高" 互相打架 ⇒ 判为无效、立刻关。
修法(最小侵入,老调用点一个字不改):
① 给 FbPersonSheet 加 `@Param embedded: boolean = false`:
.width(this.embedded ? 'auto' : '100%')
.height(this.embedded ? 'auto' : '100%')
.justifyContent(this.embedded ? FlexAlign.Start : FlexAlign.Center)
.padding(bottom 在 embedded 时去掉"贴底手势区留白"那 16)
⇒ 默认 false = 老行为;顶栏那处传 embedded: true。
② sheet 高度用 SheetSize.LARGE 而不是 FIT_CONTENT
(卡片自带 maxHeight:72%,FIT_CONTENT 下会跟它抢高度)。
③ 删掉外层 myDetailPanel 上的 constraintSize({maxHeight:'82%'})
—— 高度由 sheet 定,三方都设 = 三方打架。
真机复验(装机后立即点):
浮层完整弹出且用的是**接口那份完整数据**(含本地没有的字段):
「杨永全 · 副教授 · 家中排行第 2 个 · 生日 11-16 · 邮箱 i@yangyq.net ·
地址 青岛市 · 身份证 372****4856 · 其它邮箱 yangyq@ouc.edu.cn ·
网址 https://yangyq.net · 工作经历 中国海洋大学|副教授」+ [编辑][关闭]
客观判据:uitest dumpLayout 的布局树字节数 119207 → 162736。
验证:hvigor BUILD SUCCESSFUL;_fb_arkts_guard.js 352/0(再增 5 条钉住
embedded / SheetSize.LARGE / 不铺满 / 组件有开关);_fb_v59b_falsify.py 11/0。
另修一条旧断言(L 组"不再占满宽"原来锚死 `width('92%')` 字面量,
放宽为接受条件式,但没退化成"文件里有 92% 就行")。
2026-10-18 21:22:43 +08:00
..
2026-10-18 21:22:43 +08:00
2026-10-11 22:07:48 +08:00
2026-10-11 22:07:48 +08:00
2026-10-11 22:07:48 +08:00
2026-10-11 22:07:48 +08:00