v0.8.2 头像点进我的详情 / 未读数接真实数据 / 名册圆角卡(容器要换成页面底色)
用户 2026-10-18 夜三条: ①「右上角,显示的应该是登录者的头像,点击头像进入我的详情页面。」 头像**本来就是登录者本人的**(v59 已接 session.me.avatarUrl); 真正缺的是**点击** —— TopBar 里那个 FbAvatar **根本没有 onClick**, 只有一句写着"点开账号菜单"的注释,而"账号菜单"这个东西在代码里并不存在。 ⇒ 接 openMyDetail() → bindSheet 弹 FbPersonSheet(复用名册那个人详情组件)。 🔴 数据必须走 repo.byId(meId)(本次为它新增 byId),不能从名册列表那批里找: **"我"常常不在自己的名册里**(名册是"我挑出来的那一小撮"), 从列表里查会**静默落空**、点了没反应 —— 最难查的那种失败。 ⚠️ 三种状态都说清楚:加载中 / 拿到了 / 拿不到,绝不留空白浮层。 ②「提醒按钮,明明没提醒,怎么还显示个 2?」 🔴 真根因:`@Trace unread: number = 2;` 是**写死的占位初值**, 而全工程只有一处给它赋值(通知页「全部已读」清 0)。 没进过通知页的人**永远看到 2**;进了通知页又"永远 0"(把真实未读也盖掉) —— 两个方向都错。 ⇒ ① 初值改 0(拿到真值前必须是"没有未读",不能凭空多出 2); ② 首页把 /home 的真实 unread 写进全局状态。 (服务端 Notification::unreadCount,与通知页同源;/home 本来就返回它、 FbParse 也早就解析了 —— 只是**没人往全局状态里写**。) ③「名册页面,不好看,太丑了,应该是每个人都是圆角矩形,往中间收一点, 距离左右都有点距离,每个人中间都有一点空隙。」 🔴🔴 真凶**不是卡片形状**(v51 就做了 borderRadius + margin)—— 而是**列表容器也是纯白** ⇒ 白卡压白底 ⇒ 圆角与左右收边**全看不见**, 看上去就是一整块通栏白。这解释了"改过一轮还是丑":上次改的是卡片, 问题在"背景没有对比"。 ⇒ 容器 + 外层兜底改 FbColors.paper(页面底色),卡片保持白; 圆角 radiusS(10) → 新增 radiusCard(14)(列表项专用档:16 显胖、10 显方); 左右各 pagePad(16)、卡间 10(原 8 偏挤)、行内边距 11→12。 验证:hvigor BUILD SUCCESSFUL;_fb_arkts_guard.js 347/0(本批新增 18 条, 另**收紧 2 条**旧判据 —— M 组"圆角卡"那条原来锚"逐字相邻两行"、且**测错了对象**: 没查容器背景,所以对"白卡压白底"这个真实缺陷毫无把关能力); _fb_v59b_falsify.py 8 项注入 ⇒ 8/0。 ⚠️ 本轮反向验证头一轮漏了 3 条(都是"判据太宽"),已逐条收紧并记入 pitfalls: · 删掉头像 onClick 后仍绿 —— openMyDetail 这个标识符在**方法定义**里也出现; · 容器改回白底后仍绿 —— 本页有**两处** FbColors.paper(容器 / 兜底); · /home unread 改成写死 2 后仍绿 —— Notification::unreadCount 在 PHP 里也有两处。
This commit is contained in:
@@ -133,6 +133,21 @@ export struct FbHomePage {
|
||||
this.statOverdue = d.stat.overdue;
|
||||
this.memories = d.memories;
|
||||
this.recentDays = d.recentDays;
|
||||
/* 🔴🔴 v59b(用户 2026-10-18):「提醒按钮,明明没提醒,怎么还显示个 2?」
|
||||
*
|
||||
* 真根因:`app.unread` **从来没接过数据** —— 它只是 `FbAppState` 里的
|
||||
* 一个写死的初值 `@Trace unread: number = 2;`,而全工程**只有一处**
|
||||
* 给它赋值(通知页的「全部已读」把它改成 0)。
|
||||
* ⇒ 于是"从没进过通知页"的用户**永远看到 2**;进了通知页又变成
|
||||
* "永远是 0"(把真实未读也盖掉了)。两个方向都错。
|
||||
*
|
||||
* `/home` 本来就返回权威的 `unread`(服务端 `Notification::unreadCount`,
|
||||
* 与通知页同一个来源)—— 这里把它同步进全局状态,铃铛角标就真了。
|
||||
*
|
||||
* ⚠️ 首页是启动后必到的页面(默认模块),所以这一个赋值点就够
|
||||
* "进应用看到真数字";进通知页后由那边继续维护(标记已读会变)。
|
||||
*/
|
||||
this.app.unread = d.unread;
|
||||
},
|
||||
(note: string): void => {
|
||||
this.syncNote = note;
|
||||
|
||||
@@ -802,15 +802,21 @@ export struct FbPeoplePage {
|
||||
// 见 `build()` 的说明。
|
||||
.layoutWeight(1)
|
||||
.width('100%')
|
||||
// 🔴 **白底铺满整屏、不内缩、不圆角**(用户 2026-10-15 反馈"最下面还有一条
|
||||
// 有背景色的东西,不是从最底下滑上来的")。
|
||||
//
|
||||
// 之前是"左右 margin 内缩 + 圆角"的**卡片形态** ⇒
|
||||
// ① 列表底部与屏幕底之间留出页面底色;
|
||||
// ② 左右两条底色也会在滚到底时露出来。
|
||||
// ⇒ 白底**通栏到底**,不再做卡片。
|
||||
// ⚠️ 别再用 `margin`/`borderRadius`/`clip` —— 那三个就是"卡片感"的来源。
|
||||
.backgroundColor(FbColors.surface)
|
||||
/* 🔴🔴 v59b(用户 2026-10-18):「名册页面,不好看,太丑了,应该是
|
||||
* 每个人都是圆角矩形,往中间收一点,距离左右都有点距离,
|
||||
* 每个人中间都有一点空隙。这样是很多个圆角矩形平铺下来的。」
|
||||
*
|
||||
* 🔴 真凶:卡片**早就**是圆角矩形了(v51 就做了 `borderRadius` +
|
||||
* `margin`),但**容器也是纯白** ⇒ **白卡压在白底上**,
|
||||
* 圆角和左右收边**全都看不见** —— 看上去就是一整块通栏白。
|
||||
* (这解释了为什么"改过一轮还是丑":改的是卡片的形状,
|
||||
* 而问题在于它没有可对比的背景。)
|
||||
*
|
||||
* ⇒ 容器改成**页面底色(宣纸米色)**,白卡才"浮"得出来;
|
||||
* 外层那个兜底白(见 build 末尾)也一并改掉,否则滚到底
|
||||
* 会从米色突然切回白色。
|
||||
*/
|
||||
.backgroundColor(FbColors.paper)
|
||||
// 🔴🔴 **这里绝对不能再加 `padding({bottom})`**
|
||||
// (用户 2026-10-15:「它的内容是从悬浮框上面滚出来的」)。
|
||||
//
|
||||
@@ -831,9 +837,10 @@ export struct FbPeoplePage {
|
||||
}
|
||||
.width('100%')
|
||||
.layoutWeight(1)
|
||||
// 🔴 外层也铺白底:内容不足一屏时,列表白底铺不到屏幕底,
|
||||
// 这一层就是"兜底的白" —— 不能让页面底色从底部露出来。
|
||||
.backgroundColor(FbColors.surface)
|
||||
/* 兜底底色 = **页面底色**(原来是纯白)。
|
||||
⚠️ 必须与列表容器同色:列表内容不足一屏时,露出来的就是这一层;
|
||||
两层不同色会在底部切出一条突兀的色带(v51 踩过同类问题)。 */
|
||||
.backgroundColor(FbColors.paper)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -916,14 +923,22 @@ export struct FbPeoplePage {
|
||||
})
|
||||
}
|
||||
.width('100%')
|
||||
.padding({ left: 14, right: 14, top: 11, bottom: 11 })
|
||||
// 🔴 用户 2026-10-16:「人员列表项:每一个人员是不是都可以做成一个
|
||||
// **圆角矩形**的形式?」⇒ 每条**独立一张圆角卡**(白底 + 间距),
|
||||
// 不再靠 Divider 连成一大块。
|
||||
.padding({ left: 14, right: 14, top: 12, bottom: 12 })
|
||||
/* 🔴 v59b(用户 2026-10-18):「每个人都是圆角矩形,往中间收一点,
|
||||
* 距离左右都有点距离,每个人中间都有一点空隙。这样是很多个
|
||||
* 圆角矩形平铺下来的。」
|
||||
*
|
||||
* ⚠️ 形状其实**早就是**圆角卡了(v51),用户说"丑"的真凶在容器 ——
|
||||
* 列表容器也是纯白 ⇒ 白卡压白底 ⇒ 圆角/收边**全看不见**。
|
||||
* 已把容器改成页面底色(见 rosterView 的 `backgroundColor`),
|
||||
* 白卡这才"浮"得出来。
|
||||
* ⚠️ 这里的三个数也一起放大了一档(user 明确要"收一点 + 有空隙"):
|
||||
* 左右 16(= 全站 pagePad,与页头对齐)、卡间 10(原来 8,偏挤)、
|
||||
* 圆角 14(原来 10,在 12 的行内边距下 10 显得方)。
|
||||
*/
|
||||
.backgroundColor(FbColors.surface)
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
// ⚠️ 间距放这里(@Builder 不能链式)—— 左右留边 + 卡间空隙
|
||||
.margin({ left: FbMetric.pagePad, right: FbMetric.pagePad, bottom: 8 })
|
||||
.borderRadius(FbMetric.radiusCard)
|
||||
.margin({ left: FbMetric.pagePad, right: FbMetric.pagePad, bottom: 10 })
|
||||
.alignItems(VerticalAlign.Center)
|
||||
// 🔴 点整行 = **拨打这个人的电话**(用户 2026-10-13 / 10-15 明确要求)。
|
||||
// 规则(2026-10-15 用户确认):**有主号打主号**;
|
||||
|
||||
Reference in New Issue
Block a user