我尝试在 Jetpack Compose 的 Material3 库中使用
dateValidator
参数和 DatePicker
来限制用户选择过去的日期。但是,我收到以下错误:
Cannot find a parameter with this name: dateValidator
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TaskDatePicker(
state: DatePickerState,
isOpen: Boolean,
confirmButtonText: String = "OK",
dismissButtonText: String = "Cancel",
onDismissRequest: () -> Unit,
onConfirmButtonClicked: () -> Unit
) {
if (isOpen) {
DatePickerDialog(
onDismissRequest = onDismissRequest,
confirmButton = {
TextButton(onClick = onConfirmButtonClicked) {
Text(text = confirmButtonText)
}
},
dismissButton = {
TextButton(onClick = onDismissRequest) {
Text(text = dismissButtonText)
}
},
content = {
DatePicker(
state = state,
dateValidator = { timestamp ->
val selectedDate = Instant
.ofEpochMilli(timestamp)
.atZone(ZoneId.systemDefault())
.toLocalDate()
val currentDate = LocalDate.now(ZoneId.systemDefault())
selectedDate >= currentDate
}
)
}
)
}
}
如何解决这个问题?
我在
dateValidator
内的 DatePicker
组件中添加了 DatePickerDialog
参数,以限制选择过去的日期。我希望这会使过去的日期变灰并使其不可选择,如某些文档中所述。
我的期望:
我希望
dateValidator
能够正常工作并在 DatePicker
UI 中禁用今天日期之前的任何日期。
实际发生的事情:
我收到错误:
Cannot find a parameter with this name: dateValidator
,表明该参数可能在我的库版本中不可用,或者可能在DatePicker
中不受支持。
1.4.0-alpha02
的 DatePicker()
版本不提供 dateValidator
参数。截至我撰写本文时,这是文档中涵盖的版本。
我希望
能够正常工作并在dateValidator
UI 中禁用今天日期之前的任何日期。DatePicker
DatePicker()
使用 a DatePickerState
。这需要 a SelectableDates
实现 来指示什么是可选的,什么是不可选的。