docs: Task 12 睡眠区块去掉恒真判空(ledger R33)

This commit is contained in:
2026-09-10 12:32:29 +08:00
parent 1c491254ff
commit 06cd3916e3
@@ -4288,8 +4288,13 @@ private fun SleepStagesCard(points: List<MetricPoint>, modifier: Modifier = Modi
// 这里改成以最后一个数据点为起床时刻、往前推 8 小时作为入睡时刻 —— 一张卡片讲「一晚」。 // 这里改成以最后一个数据点为起床时刻、往前推 8 小时作为入睡时刻 —— 一张卡片讲「一晚」。
// M3 接入真实睡眠数据后改为读取实际分期时段。 // M3 接入真实睡眠数据后改为读取实际分期时段。
val wakeUp = points.lastOrNull()?.timestamp val wakeUp = points.lastOrNull()?.timestamp
val fallAsleep = wakeUp?.minus(DEMO_SLEEP_WINDOW_MILLIS) if (wakeUp != null) {
if (fallAsleep != null && wakeUp != null) { // 只有拿到起床时刻才渲染这一行;入睡时刻由它推出,所以判空只需判 wakeUp。
// 原稿写的是 `if (fallAsleep != null && wakeUp != null)`,其中 `wakeUp != null`
// 恒真(fallAsleep 由 wakeUp 推出),Kotlin 会报 "Condition is always 'true'" 告警
// (ledger Ruling R33)。语义与上式完全等价:wakeUp 为 null 时两者皆 null,跳过;
// 否则 fallAsleep 必然非空,渲染。
val fallAsleep = wakeUp - DEMO_SLEEP_WINDOW_MILLIS
Row( Row(
modifier = Modifier.fillMaxWidth().padding(top = 12.dp), modifier = Modifier.fillMaxWidth().padding(top = 12.dp),
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,