如何在 Jetpack Compose 中使文本可点击?我还想在选择一次后将其切换为不可点击

How do you make a text clickable in jetpack compose ? I would also like to toggle it to non clickable after selecting once

        Text(
            text = "Resend OTP",
            fontSize = 20.sp,
            color =  Textfieldcolor,
            style = TextStyle(textDecoration = TextDecoration.Underline)
        )

//这是我的代码这个文本应该可以选择一次然后被禁用。

就像@Arpit 提到的那样,最好使用 TextBotton 来达到这个目的。 但是如果你绝对想使用 Text,你可以使用下面的代码片段。

@Composable 
fun OneTimeClickableText(text : String, onClick : () -> Unit){
    var enabled by rememberSaveable{ mutableStateOf(true)}
    Text(
        modifier = Modifier
            .clickable(enabled = enabled) {
                enabled = false
                onClick()
            },
        text = text
    )
}

那是说我这段代码是严格针对 one-time 可点击文本的。我不建议将它用于 OTP 按钮之类的东西;因为用户将无法单击它,除非他们重新启动您的应用程序。您可以拉取 enabled 变量并从外部对其进行管理(例如,将其禁用一段时间而不是永久禁用)。

您可以添加 clickable modifier or can use the ClickableText:

var enabled by remember { mutableStateOf(true)}

ClickableText(
    text = AnnotatedString(text) ,
    onClick = {
        if (enabled) {
            enabled = false
            text = "Disabled"
        }
    })