Tolriq
05/15/2025, 3:18 PMTolriq
05/15/2025, 3:19 PMval fallbackRequester = remember { FocusRequester() }
AnimatedContent(
targetState = navigator.lastItem,
transitionSpec = transition,
modifier = modifier
.focusGroup()
.focusRestorer(fallback = fallbackRequester)
.focusRequester(fallbackRequester),
label = "",
) { screen ->
navigator.saveableState("transition", screen) {
content(screen)
}
}
This will properly save the focus and everything when leaving and returning to the group but the focus still leave the group during transition and so the wanted effect is lost, focus goes to the navigation rail instead of being kept in the current screen.Tolriq
05/15/2025, 4:43 PMval fallbackRequester = remember { FocusRequester() }
AnimatedContent(
targetState = navigator.lastItem,
transitionSpec = transitionSpec,
modifier = modifier,
label = "",
) { screen ->
val transition = this.transition
val isTransitioning = transition.currentState != transition.targetState
LaunchedEffect(isTransitioning) {
if (isTransitioning) {
fallbackRequester.requestFocus()
fallbackRequester.captureFocus()
} else {
fallbackRequester.freeFocus()
}
}
Box(
Modifier
.focusGroup()
.focusRestorer(fallback = fallbackRequester)
.focusRequester(fallbackRequester),
) {
navigator.saveableState("transition", screen) {
content(screen)
}
}
}
But then then freeFocus does not put back the focus to the saved one 😞Tolriq
05/15/2025, 4:44 PM