Navigation mit Compose für Wear OS

Die Navigationskomponente in Android Jetpack unterstützt Jetpack Compose-Anwendungen. Sie können zwischen zusammensetzbaren Funktionen wechseln und gleichzeitig die Infrastruktur und Funktionen der Navigationskomponente nutzen.

Auf dieser Seite werden die Unterschiede mit Jetpack Navigation in Compose für Wear OS beschrieben.

Einrichten

Verwenden Sie die folgende Abhängigkeit in der build.gradle-Datei Ihres App-Moduls:

Kotlin


dependencies {
    def wear_compose_version = "1.3.1"
    implementation "androidx.wear.compose:compose-navigation:$wear_compose_version"
}

Es wird anstelle des Artefakts androidx.navigation:navigation-compose verwendet, da es alternative Implementierungen speziell für Wear OS bietet.

Navigations-Controller, Host und Diagramm erstellen

Für die Navigation mit Compose für Wear OS sind dieselben drei Komponenten erforderlich, die auch für andere Apps als Wear OS erforderlich sind: den Navigations-Controller, den Host und die Grafik.

Verwenden Sie rememberSwipeDismissableNavController(), um eine Instanz von WearNavigator zu erstellen, einer Implementierung von NavController, die für Wear OS-Apps geeignet ist:

Kotlin


val navController = rememberSwipeDismissableNavController()

Die NavController ist die primäre API für die Navigation in Compose-Anwendungen. Damit wird das Wechseln zwischen zusammensetzbaren Funktionen im Navigationshost gesteuert, der unter Wear OS SwipeDismissableNavHost ist.

Kotlin

val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(
    navController = navController,
    startDestination = "message_list"
) {
    // TODO: build navigation graph
}

Wie bei der zusammensetzbaren Funktion NavHost benötigt sie einen Verweis auf den Navigations-Controller, die Route für das Startziel und den Builder für die Navigationsgrafik, die hier als nachlaufende Lambda-Funktion angezeigt wird.

Das Startziel muss zusammen mit allen anderen Zielen, die mit dem Navigations-Controller navigierbar sein sollen, im Builder für Navigationsgrafiken angegeben werden.

Kotlin

val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(
    navController = navController,
    startDestination = "message_list"
) {
    composable("message_list") {
        MessageList(onMessageClick = { id ->
            navController.navigate("message_detail/$id")
        })
    }
    composable("message_detail/{id}") {
        MessageDetail(id = it.arguments?.getString("id")!!)
    }
}

Weitere Informationen zu Jetpack Navigation finden Sie unter Mit Compose navigieren oder im Code-Lab zu Jetpack Compose-Navigation.