# rememberSceneState

Common/All

## Functions summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneState<T>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable <T : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html> https://developer.android.com/reference/kotlin/androidx/navigation3/scene/rememberSceneState.composable#rememberSceneState(kotlin.collections.List,kotlin.collections.List,kotlin.collections.List,androidx.compose.animation.SharedTransitionScope,kotlin.Function0)( entries: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/NavEntry<T>>, sceneStrategies: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneStrategy<T>>, sceneDecoratorStrategies: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneDecoratorStrategy<T>>, sharedTransitionScope: https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope?, onBack: () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Returns a `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneState` that is remembered across compositions based on the parameters. | Cmn |

## Functions

### rememberSceneState

Cmn Artifact: [androidx.navigation3:navigation3-ui](https://developer.android.com/jetpack/androidx/releases/navigation3) [View Source](https://cs.android.com/search?q=file:androidx/navigation3/scene/SceneState.kt+function:rememberSceneState) Added in [1.1.0-rc01](https://developer.android.com/jetpack/androidx/releases/navigation3#1.1.0-rc01)

```
@Composable
fun <T : Any> rememberSceneState(
    entries: List<NavEntry<T>>,
    sceneStrategies: List<SceneStrategy<T>>,
    sceneDecoratorStrategies: List<SceneDecoratorStrategy<T>> = emptyList(),
    sharedTransitionScope: SharedTransitionScope? = null,
    onBack: () -> Unit
): SceneState<T>
```

Returns a `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneState` that is remembered across compositions based on the parameters.

This calculates all of the scenes and provides them in a `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneState`.

```kotlin
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,
        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)
```

| Parameters |
|---|---|
| `entries: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/NavEntry<T>>` | all of the entries that are associated with this state |
| `sceneStrategies: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneStrategy<T>>` | the list of `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneStrategy` to determine which scene to render a list of entries. |
| `sceneDecoratorStrategies: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneDecoratorStrategy<T>> = emptyList()` | list of `https://developer.android.com/reference/kotlin/androidx/navigation3/scene/SceneDecoratorStrategy` to add content to the scene. |
| `sharedTransitionScope: https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope? = null` | the `https://developer.android.com/reference/kotlin/androidx/compose/animation/SharedTransitionScope` needed to wrap the scene decorator. If this parameter is added, this function will require the `https://developer.android.com/reference/kotlin/androidx/navigation3/ui/package-summary#LocalNavAnimatedContentScope()`. |
| `onBack: () -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | a callback for handling system back press. |