SceneStateSample
@Suppress("unused")
@Composable
fun SceneStateSample() {
val backStack = rememberSaveable { mutableStateListOf("a", "b") }
val entries =
rememberDecoratedNavEntries(backStack) { key -> NavEntry(key) { Text("Key = $key") } }
val sceneState =
rememberSceneState(
entries,
listOf(SinglePaneSceneStrategy()),
onBack = { backStack.removeLastOrNull() },
)
val currentScene = sceneState.currentScene
val navigationEventState =
rememberNavigationEventState(
currentInfo = SceneInfo(currentScene),
backInfo = sceneState.previousScenes.map { SceneInfo(it) },
)
NavigationBackHandler(
navigationEventState,
isBackEnabled = currentScene.previousEntries.isNotEmpty(),
onBackCompleted = {
// Remove entries from the back stack until we've removed all popped entries
repeat(entries.size - currentScene.previousEntries.size) {
backStack.removeLastOrNull()
}
},
)
NavDisplay(sceneState, navigationEventState)
}