# ComposeNavigator

Artifact: [androidx.navigation:navigation-compose](https://developer.android.com/jetpack/androidx/releases/navigation) [View Source](https://cs.android.com/search?q=file:androidx/navigation/compose/ComposeNavigator.kt+class:androidx.navigation.compose.ComposeNavigator) Added in [2.4.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.4.0) Common/AllAndroid/JVM
- Cmn

  ```
  @Navigator.Name(value = "composable")
  class ComposeNavigator : Navigator<ComposeNavigator.Destination>
  ```

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.navigation.Navigator](https://developer.android.com/reference/kotlin/androidx/navigation/Navigator)\<[ComposeNavigator.Destination](https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination)\> ||
|   | ↳ | [androidx.navigation.compose.ComposeNavigator](https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator) |

*** ** * ** ***

Navigator that navigates through `https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable`s. Every destination using this Navigator must set a valid `https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable` by setting it directly on an instantiated `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination` or calling `https://developer.android.com/reference/kotlin/androidx/navigation/compose/package-summary#(androidx.navigation.NavGraphBuilder).composable(kotlin.String,kotlin.collections.List,kotlin.collections.List,kotlin.Function1,kotlin.Function1,kotlin.Function1,kotlin.Function1,kotlin.Function1,kotlin.Function2)`.

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination.ClassType(value = https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable) class https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination : https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination` NavDestination specific to `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator` |

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#ComposeNavigator()()` | Cmn |

| ### Public functions |
|---|---|---|
| `open https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#createDestination()()` Construct a new NavDestination associated with this Navigator. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#navigate(kotlin.collections.List,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)( entries: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry>, navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?, navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras? )` Navigate to a destination. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#onTransitionComplete(androidx.navigation.NavBackStackEntry)(entry: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry)` Callback to mark a navigation in transition as complete. | Cmn |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#popBackStack(androidx.navigation.NavBackStackEntry,kotlin.Boolean)(popUpTo: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry, savedState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Attempt to pop this navigator's back stack, performing the appropriate navigation. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#prepareForTransition(androidx.navigation.NavBackStackEntry)(entry: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry)` Function to prepare the entry for transition. | Cmn |

| ### Public properties |
|---|---|---|
| `https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry>>` | `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#backStack()` Get the back stack from the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#state()`. | Cmn |

### Inherited functions

From [androidx.navigation.Navigator](https://developer.android.com/reference/kotlin/androidx/navigation/Navigator) `open https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination?` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#navigate(androidx.navigation.NavDestination,androidx.savedstate.SavedState,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)(
destination: https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination,
args: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?,
navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?,
navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?
)`

Navigate to a destination.
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onAttach(androidx.navigation.NavigatorState)(state: https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorState)`

Indicator that this Navigator is actively being used by a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`.
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onLaunchSingleTop(androidx.navigation.NavBackStackEntry)(backStackEntry: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry)`

Informational callback indicating that the given `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onLaunchSingleTop(androidx.navigation.NavBackStackEntry)` has been affected by a `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldLaunchSingleTop()` operation.
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onRestoreState(androidx.savedstate.SavedState)(savedState: https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState)`

Restore any state previously saved in `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onSaveState()`.
Cmn `open https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState?` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onSaveState()()`

Called to ask for a `https://developer.android.com/reference/kotlin/androidx/savedstate/SavedState` representing the Navigator's state.
Cmn `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#popBackStack()()`

Attempt to pop this navigator's back stack, performing the appropriate navigation.
Cmn

### Inherited properties

From [androidx.navigation.Navigator](https://developer.android.com/reference/kotlin/androidx/navigation/Navigator) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#isAttached()`

Whether this Navigator is actively being used by a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`.
Cmn `https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorState` `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#state()`

The state of the Navigator is the communication conduit between the Navigator and the `https://developer.android.com/reference/kotlin/androidx/navigation/NavController` that has called `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#onAttach(androidx.navigation.NavigatorState)`.
Cmn

## Public constructors

### ComposeNavigator

Cmn Added in [2.4.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.4.0)

```
ComposeNavigator()
```

## Public functions

### createDestination

Cmn Added in [2.4.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.4.0)

```
open fun createDestination(): ComposeNavigator.Destination
```

Construct a new NavDestination associated with this Navigator.

Any initialization of the destination should be done in the destination's constructor as it is not guaranteed that every destination will be created through this method.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator.Destination` | a new NavDestination |

### navigate

Cmn

```
open fun navigate(
    entries: List<NavBackStackEntry>,
    navOptions: NavOptions?,
    navigatorExtras: Navigator.Extras?
): Unit
```

Navigate to a destination.

Requests navigation to a given destination associated with this navigator in the navigation graph. This method generally should not be called directly; `https://developer.android.com/reference/kotlin/androidx/navigation/NavController` will delegate to it when appropriate.

| Parameters |
|---|---|
| `entries: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry>` | destination(s) to navigate to |
| `navOptions: https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions?` | additional options for navigation |
| `navigatorExtras: https://developer.android.com/reference/kotlin/androidx/navigation/Navigator.Extras?` | extras unique to your Navigator. |

### onTransitionComplete

Cmn Added in [2.6.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.6.0)

```
fun onTransitionComplete(entry: NavBackStackEntry): Unit
```

Callback to mark a navigation in transition as complete.

This should be called in conjunction with `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#navigate(kotlin.collections.List,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)` and `https://developer.android.com/reference/kotlin/androidx/navigation/compose/ComposeNavigator#popBackStack(androidx.navigation.NavBackStackEntry,kotlin.Boolean)` as those calls merely start a transition to the target destination, and requires manually marking the transition as complete by calling this method.

Failing to call this method could result in entries being prevented from reaching their final `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State`.

### popBackStack

Cmn

```
open fun popBackStack(popUpTo: NavBackStackEntry, savedState: Boolean): Unit
```

Attempt to pop this navigator's back stack, performing the appropriate navigation.

All destinations back to `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#popBackStack(androidx.navigation.NavBackStackEntry,kotlin.Boolean)` should be popped off the back stack.

| Parameters |
|---|---|
| `popUpTo: https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry` | the entry that should be popped off the `https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorState#backStack()` along with all entries above this entry. |
| `savedState: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | whether any Navigator specific state associated with `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#popBackStack(androidx.navigation.NavBackStackEntry,kotlin.Boolean)` should be saved to later be restored by a call to `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#navigate(kotlin.collections.List,androidx.navigation.NavOptions,androidx.navigation.Navigator.Extras)` with `https://developer.android.com/reference/kotlin/androidx/navigation/NavOptions#shouldRestoreState()`. |

### prepareForTransition

Cmn Added in [2.8.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.8.0)

```
fun prepareForTransition(entry: NavBackStackEntry): Unit
```

Function to prepare the entry for transition.

This should be called when the entry needs to move the `https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State` in preparation for a transition such as when using predictive back.

## Public properties

### backStack

Cmn Added in [2.6.0](https://developer.android.com/jetpack/androidx/releases/navigation#2.6.0)

```
val backStack: StateFlow<List<NavBackStackEntry>>
```

Get the back stack from the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#state()`.