From 1438b405a96ce2611342545b7ca6e32d68724213 Mon Sep 17 00:00:00 2001 From: xfy Date: Mon, 15 Jun 2026 11:30:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=A5=E6=9C=9F=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E5=99=A8=20Row=20=E6=97=A5=E6=9C=9F=E9=80=89=E6=8B=A9=E5=99=A8?= =?UTF-8?q?=E7=A6=81=E9=80=89=E6=97=A9=E4=BA=8E=E7=94=9F=E4=BA=A7=E6=97=A5?= =?UTF-8?q?=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plus/rua/project/ui/DateCheckerScreen.kt | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/core/src/main/kotlin/plus/rua/project/ui/DateCheckerScreen.kt b/core/src/main/kotlin/plus/rua/project/ui/DateCheckerScreen.kt index b129abf..601b6bb 100644 --- a/core/src/main/kotlin/plus/rua/project/ui/DateCheckerScreen.kt +++ b/core/src/main/kotlin/plus/rua/project/ui/DateCheckerScreen.kt @@ -43,6 +43,7 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold +import androidx.compose.material3.SelectableDates import androidx.compose.material3.SwipeToDismissBox import androidx.compose.material3.SwipeToDismissBoxValue import androidx.compose.material3.Text @@ -453,7 +454,23 @@ fun DateCheckerScreen(onBack: () -> Unit, modifier: Modifier = Modifier) { null -> productionDate.toEpochMillis() } - val datePickerState = rememberDatePickerState(initialSelectedDateMillis = initialMillis) + val productionMillis = productionDate.toEpochMillis() + // Row 日期选择器禁选早于生产日期(到期日不应在生产之前); + // Production 选择器本身不受限制。当前 BOM 无 SelectableDates.AllDates, + // 用空实现 object 等价于默认全允许(default 方法均返回 true)。 + val datePickerState = rememberDatePickerState( + initialSelectedDateMillis = initialMillis, + selectableDates = when (datePickerTarget) { + is DatePickerTarget.Row -> object : SelectableDates { + override fun isSelectableDate(utcTimeMillis: Long): Boolean = + utcTimeMillis >= productionMillis + + override fun isSelectableYear(year: Int): Boolean = + year >= productionDate.year + } + else -> object : SelectableDates {} + } + ) DatePickerDialog( onDismissRequest = { showDatePicker = false },