v0.8.3 头像显示 / 主题色标签 / 右侧贴边 / 简要卡片 / 浮层分离
用户 2026-10-18 第二批五条: ①「右上角的个人头像没显示。」 🔴 真根因:`/me` 与 `/login` 返回的 `avatar_url` 是**相对地址** (`media.php?k=avatars%2Fxxx.jpg` —— 不带域名、不带令牌), 那是给**浏览器**用的(同源 + cookie);`Image()` 要完整 URL ⇒ 加载失败。 真机日志:`GetAsset failed: media.php?k=avatars%2F20261002_...jpg` ⇒ 新增 `fbMediaUrl(raw, token)` 归一化,**三种形态都认** (绝对地址 / media.php 相对式 / 裸 key)—— 少认一种就会出现 "有的头像能显示、有的不能",那类 bug 最难查。 ⚠️ 不能复用 `fbImageSrc()`:那是"附件 key → 本地缓存"的通道, 把整条 URL 当 key 传进去会得到一个必然 404 的地址。 ②「名册、家谱这两个标签,用的不是主题色。」 🔴 两个调用点**各硬编码 `'#A84A28'`**(品牌砖红),而名册模块主题色是 `#4A7C82`(青)⇒ 与整页不在一个色系。 ⇒ `segBtn` 不再由调用方传色,内部取 `fbThemeVars(fbModuleOf('people').color).brand`; 顺手消掉"两处各写一遍字面量"这个漂移源。 ③「名册列表,左侧有空隙了……怎么右侧不是呢?右侧还是紧贴屏幕。」 🔴 实测(像素扫描):左米色 50~72px、**右米色 0px**。 根因是 `Row` 内 `layoutWeight(1)` 的子项默认 `min-width: auto` (按内容最小宽度)⇒ 长名字/多标签把**卡片布局盒撑破** ⇒ 右边越界贴屏幕 (左边先被 margin 占位、所以还留着空隙)。 ⇒ 弹性子项开 `flexShrink(1)`,姓名那行连同 `width('100%')`。 ④「点击列表,不打电话了,容易误触。而是弹出一个卡片,卡片中是头像、名称、 电话号码、邮箱等简要信息,下面三个按钮,详情、编辑和删除。…… 列表页面中,也不要详情按钮了。」 ⇒ 新建 `FbPersonQuickSheet`(@ComponentV2): 头像 / 姓名+称谓 / 电话(主号 + 其他)/ 邮箱 / 单位 / 生日 + 三个等宽按钮「详情 / 编辑 / 删除」。 ⇒ 点整行走 `openQuick()`(**不再拨号**);列表里的「详情」按钮**删除**。 ⇒ 删除走 `AlertDialog` **二次确认**(服务端物理删除、无回收站 ⇒ 误触不可逆), 文案带姓名("确定把「老杨」…")—— 误触时最需要"是不是点错了人"这个信息。 ⚠️ 两级浮层分开两个状态(`quickPerson` / `detailPerson`);详情关掉**回到简要卡**, 而不是一路退回列表。 ⑤「这个卡片,弹出来之后,是白色的,和下面的列表中的白色,都融合在一起, 根本看不出是弹框。」 🔴 原来只靠 `#00000066` 遮罩区分 —— 而本应用**列表本身就是大面积白底**, 白卡压在"被压暗的白"上边界仍发飘。 ⇒ **三层分离**:① 遮罩(宿主)② 卡片**阴影**(抬起来)③ 极浅**描边** (同色背景上仍有一条可见界线;只靠阴影在浅底上不够稳)。 ⚠️ 三个浮层(简要卡 / 详情 / 编辑)**同手段** —— 否则从简要卡切到编辑会突然"变平"。 验证:hvigor BUILD SUCCESSFUL;_fb_arkts_guard.js 377/0(新增 28 条, 另修 3 条旧判据);_fb_v59c_falsify.py 16 项注入 ⇒ 16/0。 ⚠️ 本轮反向验证又抓出 2 条假绿 + 1 条"没真注入",已逐条收紧(记入 pitfalls): · `flexShrink(1)` 在本页有**两处**(姓名 Text / 整个 Column)⇒ "出现过"型判据 删掉关键那处仍绿;改成锚"相邻关系"(`.layoutWeight(1)` 之后 220 字符内); · `showAlertDialog` 被 `if (false)` 包起来(确认框永不弹)⇒ 字符串还在、判据仍绿; 改成查因果(窗口内有 `value: '删除'` + `this.doDelete(who)`); · 有一条注入只改了注释、没删那行代码 ⇒ 报 [MISS],那是"注入没打到点上"。
This commit is contained in:
@@ -501,6 +501,19 @@ export struct FbPersonSheet {
|
||||
})
|
||||
.backgroundColor(FbColors.surface)
|
||||
.borderRadius(FbMetric.radius)
|
||||
/* 🔴 v59c(用户 2026-10-18):「这个卡片弹出来之后是白色的,和下面列表
|
||||
* 中的白色都融合在一起,根本看不出是弹框。」
|
||||
*
|
||||
* 原因:原来只靠宿主那层 `#00000066` 遮罩区分 —— 而本应用**列表本身
|
||||
* 就是大面积白底**,白卡压在"被压暗的白"上,边界仍然发飘。
|
||||
* ⇒ 补两手(与 `FbPersonQuickSheet` 完全同一套,两级浮层观感一致):
|
||||
* ① 阴影:把卡片从背景上**抬起来**(有投影才有"浮在空中"的暗示);
|
||||
* ② 极浅描边:同色背景上仍然有一条**可见的界线**。
|
||||
* ⚠️ 只加阴影是不够的:浅色底上的投影很淡,真机上常常看不出来;
|
||||
* 描边才是"稳"的那一手(它不依赖光照假设)。
|
||||
*/
|
||||
.shadow({ radius: 24, color: '#00000033', offsetX: 0, offsetY: 6 })
|
||||
.border({ width: 1, color: '#00000014' })
|
||||
.alignItems(HorizontalAlign.Start)
|
||||
}
|
||||
/* 🔴 embedded(宿主自己就是 sheet)时**不能再铺满 + 居中**:
|
||||
|
||||
Reference in New Issue
Block a user