A TransitionState that supports a deferred phase before the automatic transition begins.
DeferredTransitionSample
@OptIn(ExperimentalDeferredTransitionApi::class)
@Composable
fun DeferredTransitionSample() {
var targetState by remember { mutableStateOf("Initial") }
var isDeferred by remember { mutableStateOf(false) }
// Create a DeferredTransitionState
val transitionState = remember { DeferredTransitionState(targetState) }
// Use LaunchedEffect to handle defer/animateTo logic based on some external signal
// (e.g. gesture progress, predictive back events, etc).
LaunchedEffect(targetState, isDeferred) {
if (isDeferred) {
// Enter deferred phase: targetState is updated as a pendingTargetState
// but animations don't start yet.
transitionState.defer(targetState)
} else {
// Start automatic transition: pendingTargetState is cleared and targetState is updated
// to trigger animations.
transitionState.animateTo(targetState)
}
}
val transition = rememberTransition(transitionState)
// Create animations as usual
val alpha by transition.animateFloat { state -> if (state == "Initial") 0f else 1f }
Box(Modifier.graphicsLayer { this.alpha = alpha }) {
// Content
}
}