androidx.navigation3.scene


Interfaces

OverlayScene

A specific scene to render 1 or more NavEntry instances as an overlay.

Cmn
Scene

A specific scene to render 1 or more androidx.navigation3.runtime.NavEntrys.

Cmn
SceneStrategy

A strategy that tries to calculate a Scene given a list of NavEntry.

Cmn

Classes

DialogSceneStrategy

A SceneStrategy that displays entries that have added dialog to their NavEntry.metadata within a Dialog instance.

Cmn
SceneInfo

Represents a snapshot of the visible destinations in a navigation container.

Cmn
SceneState

Class for holding the state associated with a scene

Cmn
SceneStrategyScope

Scope used to create a Scene from a list of NavEntrys.

Cmn
SinglePaneSceneStrategy

A SceneStrategy that always creates a 1-entry Scene simply displaying the last entry in the list.

Cmn

Top-level functions summary

SceneState<T>
@Composable
<T : Any> rememberSceneState(
    entries: List<NavEntry<T>>,
    sceneStrategy: SceneStrategy<T>,
    onBack: () -> Unit
)

Returns a SceneState that is remembered across compositions based on the parameters.

Cmn

Top-level functions

rememberSceneState

@Composable
fun <T : Any> rememberSceneState(
    entries: List<NavEntry<T>>,
    sceneStrategy: SceneStrategy<T>,
    onBack: () -> Unit
): SceneState<T>

Returns a SceneState that is remembered across compositions based on the parameters.

This calculates all of the scenes and provides them in a SceneState.

import androidx.compose.material3.Text import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.navigation3.runtime.NavEntry import androidx.navigation3.runtime.rememberDecoratedNavEntries import androidx.navigation3.scene.SceneInfo import androidx.navigation3.scene.SinglePaneSceneStrategy import androidx.navigation3.scene.rememberSceneState import androidx.navigation3.ui.NavDisplay import androidx.navigationevent.compose.NavigationBackHandler import androidx.navigationevent.compose.rememberNavigationEventState val backStack = rememberSaveable { mutableStateListOf("a", "b") } val entries =  rememberDecoratedNavEntries(backStack) { key -> NavEntry(key) { Text("Key = $key") } } val sceneState =  rememberSceneState(  entries,  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)
Parameters
entries: List<NavEntry<T>>

all of the entries that are associated with this state

sceneStrategy: SceneStrategy<T>

the SceneStrategy to determine which scene to render a list of entries.

onBack: () -> Unit

a callback for handling system back press.