xref: /aosp_15_r20/external/accompanist/docs/navigation-material.md (revision fa44fe6ae8e729aa3cfe5c03eedbbf98fb44e2c6)
1*fa44fe6aSInna Palant# Jetpack Navigation Compose Material
2*fa44fe6aSInna Palant
3*fa44fe6aSInna Palant[![Maven Central](https://img.shields.io/maven-central/v/com.google.accompanist/accompanist-navigation-material)](https://search.maven.org/search?q=g:com.google.accompanist)
4*fa44fe6aSInna Palant
5*fa44fe6aSInna PalantA library which provides [Compose Material](https://developer.android.com/jetpack/androidx/releases/compose-material) support for [Jetpack Navigation Compose](https://developer.android.com/jetpack/compose/navigation).
6*fa44fe6aSInna PalantThis features composable bottom sheet destinations.
7*fa44fe6aSInna Palant
8*fa44fe6aSInna Palant!!! warning
9*fa44fe6aSInna Palant    The navigation APIs are currently experimental and they could change at any time.
10*fa44fe6aSInna Palant    All of the APIs are marked with the `@ExperimentalMaterialNavigationApi` annotation.
11*fa44fe6aSInna Palant
12*fa44fe6aSInna Palant## Usage
13*fa44fe6aSInna Palant
14*fa44fe6aSInna Palant### Bottom Sheet Destinations
15*fa44fe6aSInna Palant
16*fa44fe6aSInna Palant1. Create a `BottomSheetNavigator` and add it to the `NavController`:
17*fa44fe6aSInna Palant
18*fa44fe6aSInna Palant    ```kotlin
19*fa44fe6aSInna Palant    @Composable
20*fa44fe6aSInna Palant    fun MyApp() {
21*fa44fe6aSInna Palant        val bottomSheetNavigator = rememberBottomSheetNavigator()
22*fa44fe6aSInna Palant        val navController = rememberNavController(bottomSheetNavigator)
23*fa44fe6aSInna Palant    }
24*fa44fe6aSInna Palant    ```
25*fa44fe6aSInna Palant
26*fa44fe6aSInna Palant2. Wrap your `NavHost` in the `ModalBottomSheetLayout` composable that accepts a `BottomSheetNavigator`.
27*fa44fe6aSInna Palant
28*fa44fe6aSInna Palant    ```kotlin
29*fa44fe6aSInna Palant    @Composable
30*fa44fe6aSInna Palant    fun MyApp() {
31*fa44fe6aSInna Palant        val bottomSheetNavigator = rememberBottomSheetNavigator()
32*fa44fe6aSInna Palant        val navController = rememberNavController(bottomSheetNavigator)
33*fa44fe6aSInna Palant        ModalBottomSheetLayout(bottomSheetNavigator) {
34*fa44fe6aSInna Palant            NavHost(navController, "home") {
35*fa44fe6aSInna Palant               // We'll define our graph here in a bit!
36*fa44fe6aSInna Palant            }
37*fa44fe6aSInna Palant        }
38*fa44fe6aSInna Palant    }
39*fa44fe6aSInna Palant    ```
40*fa44fe6aSInna Palant
41*fa44fe6aSInna Palant3. Register a bottom sheet destination
42*fa44fe6aSInna Palant
43*fa44fe6aSInna Palant    ```kotlin
44*fa44fe6aSInna Palant    @Composable
45*fa44fe6aSInna Palant    fun MyApp() {
46*fa44fe6aSInna Palant        val bottomSheetNavigator = rememberBottomSheetNavigator()
47*fa44fe6aSInna Palant        val navController = rememberNavController(bottomSheetNavigator)
48*fa44fe6aSInna Palant        ModalBottomSheetLayout(bottomSheetNavigator) {
49*fa44fe6aSInna Palant            NavHost(navController, "home") {
50*fa44fe6aSInna Palant               composable(route = "home") {
51*fa44fe6aSInna Palant                   ...
52*fa44fe6aSInna Palant               }
53*fa44fe6aSInna Palant               bottomSheet(route = "sheet") {
54*fa44fe6aSInna Palant                   Text("This is a cool bottom sheet!")
55*fa44fe6aSInna Palant               }
56*fa44fe6aSInna Palant            }
57*fa44fe6aSInna Palant        }
58*fa44fe6aSInna Palant    }
59*fa44fe6aSInna Palant    ```
60*fa44fe6aSInna Palant
61*fa44fe6aSInna PalantFor more examples, refer to the [samples](https://github.com/google/accompanist/tree/main/sample/src/main/java/com/google/accompanist/sample/navigation/material).
62*fa44fe6aSInna Palant
63*fa44fe6aSInna Palant## Download
64*fa44fe6aSInna Palant
65*fa44fe6aSInna Palant[![Maven Central](https://img.shields.io/maven-central/v/com.google.accompanist/accompanist-navigation-material)](https://search.maven.org/search?q=g:com.google.accompanist)
66*fa44fe6aSInna Palant
67*fa44fe6aSInna Palant```groovy
68*fa44fe6aSInna Palantrepositories {
69*fa44fe6aSInna Palant    mavenCentral()
70*fa44fe6aSInna Palant}
71*fa44fe6aSInna Palant
72*fa44fe6aSInna Palantdependencies {
73*fa44fe6aSInna Palant    implementation "com.google.accompanist:accompanist-navigation-material:<version>"
74*fa44fe6aSInna Palant}
75*fa44fe6aSInna Palant```
76*fa44fe6aSInna Palant
77*fa44fe6aSInna PalantSnapshots of the development version are available in [Sonatype's `snapshots` repository][snap]. These are updated on every commit.
78*fa44fe6aSInna Palant
79*fa44fe6aSInna Palant[compose]: https://developer.android.com/jetpack/compose
80*fa44fe6aSInna Palant[snap]: https://oss.sonatype.org/content/repositories/snapshots/com/google/accompanist/accompanist-navigation-material/
81