如何使可组合时间受限?

Ral*_*kum 10 android-jetpack-compose

我在 Jetpack Compose 中有一个可组合项,可以说它是一个按钮。我想对其进行时间限制,以便在这段时间过后,可组合项(此处的按钮)消失。

有没有简单的方法可以使用可组合项来实现这一点?

或者这是一个更复杂的实现?

Phi*_*hov 21

在延迟一段时间后更改视图状态的一个简单方法是使用LaunchedEffect- 它在协程范围内执行,因此您可以delay以所需的间隔使用该函数,并在完成时更改状态值。

var isButtonVisible by remember { mutableStateOf(true) }
if (isButtonVisible) {
    Button(onClick = {}) {
        Text("Button")
    }
}
LaunchedEffect(Unit) {
    delay(5.seconds)
    isButtonVisible = false
}
Run Code Online (Sandbox Code Playgroud)

一个更复杂的示例,它还将显示反向计数器:

var isButtonVisible by remember { mutableStateOf(true) }
var secondsToDisappear by remember { mutableStateOf(5) }
if (isButtonVisible) {
    Button(onClick = {}) {
        Text("Button will disappear in $secondsToDisappear seconds")
    }
}
LaunchedEffect(Unit) {
    while (secondsToDisappear > 0) {
        delay(1.seconds)
        secondsToDisappear -= 1
    }
    isButtonVisible = false
}
Run Code Online (Sandbox Code Playgroud)