在 Jetpack Compose DatePicker 中找不到具有此名称的参数:dateValidator

问题描述 投票:0回答:1

我尝试在 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
中不受支持。

android kotlin android-jetpack
1个回答
0
投票

1.4.0-alpha02
DatePicker()
版本不提供
dateValidator
参数。截至我撰写本文时,这是文档中涵盖的版本。

我希望

dateValidator
能够正常工作并在
DatePicker
UI 中禁用今天日期之前的任何日期。

DatePicker()
使用 a
DatePickerState
。这需要 a
SelectableDates
实现
来指示什么是可选的,什么是不可选的。

© www.soinside.com 2019 - 2024. All rights reserved.