# androidx.wear.compose.navigation

## Classes

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState` | State for `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` |
| `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator` | Navigator that navigates through `https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable`s. |
| `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator.Destination` | NavDestination specific to `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator` |

## Top-level functions summary

|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)( navController: https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController, graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier, userSwipeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, state: https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState )` Provides a place in the Compose hierarchy for self-contained navigation to occur, with backwards navigation provided by a swipe gesture. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)( navController: https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController, startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier, userSwipeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, state: https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState, route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?, builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Provides a place in the Compose hierarchy for self-contained navigation to occur, with backwards navigation provided by a swipe gesture. |
| `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#rememberSwipeDismissableNavController()()` Creates a NavHostController that handles the adding of the `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator` from androidx.wear.compose.navigation. |
| `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#rememberSwipeDismissableNavHostState(androidx.wear.compose.foundation.SwipeToDismissBoxState)( swipeToDismissBoxState: https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/SwipeToDismissBoxState )` Create a `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/SwipeToDismissBoxState` and remember it. |

## Extension functions summary

|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#(androidx.navigation.NavGraphBuilder).composable(kotlin.String,kotlin.collections.List,kotlin.collections.List,kotlin.Function1)( route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, arguments: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NamedNavArgument>, deepLinks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink>, content: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable (https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Utility function for building Wear Compose navigation graphs. |
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/navigation/NavController.https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#(androidx.navigation.NavController).currentBackStackEntryAsState()()` Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State`. |

## Top-level functions

### SwipeDismissableNavHost

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/SwipeDismissableNavHost.kt+function:SwipeDismissableNavHost) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.4.0)

```
@Composable
fun SwipeDismissableNavHost(
    navController: NavHostController,
    graph: NavGraph,
    modifier: Modifier = Modifier,
    userSwipeEnabled: Boolean = true,
    state: SwipeDismissableNavHostState = rememberSwipeDismissableNavHostState()
): Unit
```

Provides a place in the Compose hierarchy for self-contained navigation to occur, with backwards navigation provided by a swipe gesture.

Once this is called, any Composable within the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder` can be navigated to from the provided `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)`.

The builder passed into this method is `https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember(kotlin.Function0)`ed. This means that for this NavHost, the contents of the builder cannot be changed.

During a swipe-to-dismiss gesture, the previous navigation level (if any) is shown in the background. BackgroundScrimColor and ContentScrimColor of it are taken from `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#LocalSwipeToDismissBackgroundScrimColor()` and `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#LocalSwipeToDismissContentScrimColor()`.

Below API level 36, content of the current navigation level is displayed within a `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)` to detect swipe back gestures.

API level 36 onwards, `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)` listens to platform predictive back events for navigation, and `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)` is not used for swipe gesture detection. Therefore, `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).edgeSwipeToDismiss(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.unit.Dp)` is not compatible with `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)` for API level 36 onwards.

Example of a `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)` alternating between 2 screens:

```kotlin
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.wear.compose.material.Button
import androidx.wear.compose.material.Text
import androidx.wear.compose.navigation.SwipeDismissableNavHost
import androidx.wear.compose.navigation.composable
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController

// Example of using a NavHost where each destination in the NavGraph has a unique name.
val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(navController = navController, startDestination = "off") {
    composable("off") {
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            Button(onClick = { navController.navigate("on") }) { Text("On") }
        }
    }
    composable("on") {
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            Button(onClick = { navController.navigate("off") }) { Text("Off") }
        }
    }
}
```

Example of a `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)` for which a destination has a named argument:

```kotlin
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.navigation.NavType
import androidx.navigation.navArgument
import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
import androidx.wear.compose.material.CompactChip
import androidx.wear.compose.material.ListHeader
import androidx.wear.compose.material.Text
import androidx.wear.compose.navigation.SwipeDismissableNavHost
import androidx.wear.compose.navigation.composable
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController

// Example of using a NavHost where we pass an argument to a destination in the NavGraph.
val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(navController = navController, startDestination = "list") {
    composable("list") {
        ScalingLazyColumn(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            contentPadding = PaddingValues(horizontal = 8.dp, vertical = 32.dp),
            verticalArrangement = Arrangement.Center,
        ) {
            item { ListHeader { Text("List Screen") } }
            items(5) { index ->
                CompactChip(
                    modifier = Modifier.padding(vertical = 4.dp),
                    onClick = { navController.navigate("detail/$index") },
                    label = {
                        Text(
                            text = "Item $index",
                            textAlign = TextAlign.Center,
                            modifier = Modifier.fillMaxSize(),
                        )
                    },
                )
            }
        }
    }
    composable(
        route = "detail/{Id}",
        arguments = listOf(navArgument("Id") { type = NavType.IntType }),
    ) { backStackEntry ->
        val itemId = backStackEntry.arguments?.getInt("Id") ?: 0
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            ListHeader { Text("Details Screen") }
            Text("Item $itemId")
        }
    }
}
```

| Parameters |
|---|---|
| `navController: https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` | `https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` for this host |
| `graph: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraph` | Graph for this host |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier = Modifier` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` to be applied to the layout |
| `userSwipeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` Whether swipe-to-dismiss gesture is enabled. |
| `state: https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState = rememberSwipeDismissableNavHostState()` | State containing information about ongoing swipe and animation. This parameter is unused API level 36 onwards, because the platform supports predictive back and `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,androidx.navigation.NavGraph,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState)` uses platform gestures to detect the back gestures. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html` | if no WearNavigation.Destination is on the navigation backstack. |

### SwipeDismissableNavHost

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/SwipeDismissableNavHost.kt+function:SwipeDismissableNavHost) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.4.0)

```
@Composable
fun SwipeDismissableNavHost(
    navController: NavHostController,
    startDestination: String,
    modifier: Modifier = Modifier,
    userSwipeEnabled: Boolean = true,
    state: SwipeDismissableNavHostState = rememberSwipeDismissableNavHostState(),
    route: String? = null,
    builder: NavGraphBuilder.() -> Unit
): Unit
```

Provides a place in the Compose hierarchy for self-contained navigation to occur, with backwards navigation provided by a swipe gesture.

Once this is called, any Composable within the given `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder` can be navigated to from the provided `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)`.

The builder passed into this method is `https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember(kotlin.Function0)`ed. This means that for this NavHost, the contents of the builder cannot be changed.

During a swipe-to-dismiss gesture, the previous navigation level (if any) is shown in the background. BackgroundScrimColor and ContentScrimColor of it are taken from `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#LocalSwipeToDismissBackgroundScrimColor()` and `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#LocalSwipeToDismissContentScrimColor()`.

Below API level 36, content of the current navigation level is displayed within a `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)` to detect swipe back gestures.

API level 36 onwards, `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` listens to platform predictive back events for navigation, and `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)` is not used for swipe gesture detection.

Example of a `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` alternating between 2 screens:

```kotlin
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.wear.compose.material.Button
import androidx.wear.compose.material.Text
import androidx.wear.compose.navigation.SwipeDismissableNavHost
import androidx.wear.compose.navigation.composable
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController

// Example of using a NavHost where each destination in the NavGraph has a unique name.
val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(navController = navController, startDestination = "off") {
    composable("off") {
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            Button(onClick = { navController.navigate("on") }) { Text("On") }
        }
    }
    composable("on") {
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            Button(onClick = { navController.navigate("off") }) { Text("Off") }
        }
    }
}
```

Example of a `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` for which a destination has a named argument:

```kotlin
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.navigation.NavType
import androidx.navigation.navArgument
import androidx.wear.compose.foundation.lazy.ScalingLazyColumn
import androidx.wear.compose.material.CompactChip
import androidx.wear.compose.material.ListHeader
import androidx.wear.compose.material.Text
import androidx.wear.compose.navigation.SwipeDismissableNavHost
import androidx.wear.compose.navigation.composable
import androidx.wear.compose.navigation.rememberSwipeDismissableNavController

// Example of using a NavHost where we pass an argument to a destination in the NavGraph.
val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(navController = navController, startDestination = "list") {
    composable("list") {
        ScalingLazyColumn(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            contentPadding = PaddingValues(horizontal = 8.dp, vertical = 32.dp),
            verticalArrangement = Arrangement.Center,
        ) {
            item { ListHeader { Text("List Screen") } }
            items(5) { index ->
                CompactChip(
                    modifier = Modifier.padding(vertical = 4.dp),
                    onClick = { navController.navigate("detail/$index") },
                    label = {
                        Text(
                            text = "Item $index",
                            textAlign = TextAlign.Center,
                            modifier = Modifier.fillMaxSize(),
                        )
                    },
                )
            }
        }
    }
    composable(
        route = "detail/{Id}",
        arguments = listOf(navArgument("Id") { type = NavType.IntType }),
    ) { backStackEntry ->
        val itemId = backStackEntry.arguments?.getInt("Id") ?: 0
        Column(
            modifier = Modifier.fillMaxSize().background(Color.DarkGray),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
        ) {
            ListHeader { Text("Details Screen") }
            Text("Item $itemId")
        }
    }
}
```

| Parameters |
|---|---|
| `navController: https://developer.android.com/reference/kotlin/androidx/navigation/NavHostController` | The navController for this host |
| `startDestination: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | The route for the start destination |
| `modifier: https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier = Modifier` | The modifier to be applied to the layout |
| `userSwipeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` Whether swipe-to-dismiss gesture is enabled. |
| `state: https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostState = rememberSwipeDismissableNavHostState()` | State containing information about ongoing swipe and animation. This parameter is unused API level 36 onwards, because the platform supports predictive back and `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` uses platform gestures to detect the back gestures. |
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html? = null` | The route for the graph |
| `builder: https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder.() -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | The builder used to construct the graph |

### rememberSwipeDismissableNavController

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt+function:rememberSwipeDismissableNavController) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
@Composable
fun rememberSwipeDismissableNavController(): NavHostController
```

Creates a NavHostController that handles the adding of the `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator` from androidx.wear.compose.navigation.

### rememberSwipeDismissableNavHostState

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/SwipeDismissableNavHost.kt+function:rememberSwipeDismissableNavHostState) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.4.0)

```
@Composable
fun rememberSwipeDismissableNavHostState(
    swipeToDismissBoxState: SwipeToDismissBoxState = rememberSwipeToDismissBoxState()
): SwipeDismissableNavHostState
```

Create a `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/SwipeToDismissBoxState` and remember it.

| Parameters |
|---|---|
| `swipeToDismissBoxState: https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/SwipeToDismissBoxState = rememberSwipeToDismissBoxState()` | State for `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)`, which is used to support the swipe-to-dismiss gesture in `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` and can also be used to support edge-swiping, using `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).edgeSwipeToDismiss(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.unit.Dp)`. This parameter is unused after API 36, because the platform supports edge-swiping via predictive back gesture, and `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/package-summary#SwipeDismissableNavHost(androidx.navigation.NavHostController,kotlin.String,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.navigation.SwipeDismissableNavHostState,kotlin.String,kotlin.Function1)` drops the use of `https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#BasicSwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.ui.Modifier,kotlin.Any,kotlin.Any,kotlin.Boolean,kotlin.Function2)` in favour of predictive back based navigation. |

## Extension functions

### composable

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/NavGraphBuilder.kt+function:composable) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
fun NavGraphBuilder.composable(
    route: String,
    arguments: List<NamedNavArgument> = emptyList(),
    deepLinks: List<NavDeepLink> = emptyList(),
    content: @Composable (NavBackStackEntry) -> Unit
): Unit
```

Utility function for building Wear Compose navigation graphs.

Adds the content composable to the `https://developer.android.com/reference/kotlin/androidx/navigation/NavGraphBuilder` as a `https://developer.android.com/reference/kotlin/androidx/wear/compose/navigation/WearNavigator.Destination`.

| Parameters |
|---|---|
| `route: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | route for the destination |
| `arguments: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NamedNavArgument> = emptyList()` | list of arguments to associate with destination |
| `deepLinks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/navigation/NavDeepLink> = emptyList()` | list of deep links to associate with the destinations |
| `content: @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable (https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | composable for the destination |

### currentBackStackEntryAsState

Artifact: [androidx.wear.compose:compose-navigation](https://developer.android.com/jetpack/androidx/releases/wear-compose) [View Source](https://cs.android.com/search?q=file:androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt+function:currentBackStackEntryAsState) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/wear-compose#1.0.0)

```
@Composable
fun NavController.currentBackStackEntryAsState(): State<NavBackStackEntry?>
```

Gets the current navigation back stack entry as a `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State`. When the given navController changes the back stack due to a `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#navigate(androidx.navigation.NavUri)` or `https://developer.android.com/reference/kotlin/androidx/navigation/NavController#popBackStack()` this will trigger a recompose and return the top entry on the back stack.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/State<https://developer.android.com/reference/kotlin/androidx/navigation/NavBackStackEntry?>` | state of the current back stack entry |