Peter
10/28/2024, 4:33 PMPeter
10/28/2024, 4:34 PMstate changes between Loading, Countdown and Finished. I do not want to crossfade when Countdown changes to Countdown.
import androidx.compose.animation.Crossfade
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import kotlinx.coroutines.delay
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds
sealed interface State {
data object Loading: State
data class Countdown(val duration: Duration) : State
data object Finished: State
}
@Preview
@Composable
private fun Preview() {
var state: State by remember { mutableStateOf(State.Loading) }
LaunchedEffect(Unit) {
delay(2.seconds)
(3 downTo 0).forEach {
state = State.Countdown(it.seconds)
delay(1.seconds)
}
state = State.Finished
}
Crossfade(state, label = "your mom") {
when (state) {
is State.Countdown -> TODO()
State.Finished -> TODO()
State.Loading -> TODO()
}
}
}Stylianos Gakis
10/28/2024, 4:45 PMPeter
10/28/2024, 4:46 PM