# BottomSheetNavigator

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

  ```
  @Navigator.Name(value = "bottomSheet")
  class BottomSheetNavigator : Navigator<BottomSheetNavigator.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)\<[BottomSheetNavigator.Destination](https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator.Destination)\> ||
|   | ↳ | [androidx.compose.material.navigation.BottomSheetNavigator](https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator) |

*** ** * ** ***

Navigator that drives a `https://developer.android.com/reference/kotlin/androidx/compose/material/ModalBottomSheetState` for use of `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/ModalBottomSheetLayout.composable#ModalBottomSheetLayout(androidx.compose.material.navigation.BottomSheetNavigator,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.ui.graphics.Shape,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function0)`s with the navigation library. 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/compose/material/navigation/BottomSheetNavigator.Destination` or calling `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/package-summary#(androidx.navigation.NavGraphBuilder).bottomSheet(kotlin.String,kotlin.collections.List,kotlin.collections.List,kotlin.Function2)`.

**The `https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable` will always host the latest entry of the back stack. When navigating from a `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator.Destination` to another `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator.Destination`, the content of the sheet will be replaced instead of a new bottom sheet being shown.**

When the sheet is dismissed by the user, the `https://developer.android.com/reference/kotlin/androidx/navigation/Navigator#state()`'s `https://developer.android.com/reference/kotlin/androidx/navigation/NavigatorState#backStack()` will be popped.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/rememberBottomSheetNavigator.composable#rememberBottomSheetNavigator(androidx.compose.animation.core.AnimationSpec)` | () |

## 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/compose/material/navigation/BottomSheetNavigator.Destination : https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination, https://developer.android.com/reference/kotlin/androidx/navigation/FloatingWindow` `https://developer.android.com/reference/kotlin/androidx/navigation/NavDestination` specific to `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator`. |

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

| ### Public functions |
|---|---|---|
| `open https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator.Destination` | `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator#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/compose/material/navigation/BottomSheetNavigator#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 |
| `open https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator#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/compose/material/navigation/BottomSheetNavigator#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 |

| ### Public properties |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigatorSheetState` | `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator#navigatorSheetState()` Access properties of the `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/ModalBottomSheetLayout.composable#ModalBottomSheetLayout(androidx.compose.material.navigation.BottomSheetNavigator,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.ui.graphics.Shape,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function0)`'s `https://developer.android.com/reference/kotlin/androidx/compose/material/ModalBottomSheetState` | 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/compose/material/navigation/BottomSheetNavigator.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/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

### BottomSheetNavigator

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-material#1.7.0)

```
BottomSheetNavigator(sheetState: ModalBottomSheetState)
```

| Parameters |
|---|---|
| `sheetState: https://developer.android.com/reference/kotlin/androidx/compose/material/ModalBottomSheetState` | The `https://developer.android.com/reference/kotlin/androidx/compose/material/ModalBottomSheetState` that the `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/BottomSheetNavigator` will use to drive the sheet state |

## Public functions

### createDestination

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-material#1.7.0)

```
open fun createDestination(): BottomSheetNavigator.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/compose/material/navigation/BottomSheetNavigator.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. |

### onAttach

Cmn

```
open fun onAttach(state: NavigatorState): Unit
```

Indicator that this Navigator is actively being used by a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController`. This is called when the NavController's state is ready to be restored.

### 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()`. |

## Public properties

### navigatorSheetState

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-material#1.7.0)

```
val navigatorSheetState: BottomSheetNavigatorSheetState
```

Access properties of the `https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/ModalBottomSheetLayout.composable#ModalBottomSheetLayout(androidx.compose.material.navigation.BottomSheetNavigator,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.ui.graphics.Shape,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function0)`'s `https://developer.android.com/reference/kotlin/androidx/compose/material/ModalBottomSheetState`