Nawigacja z użyciem Utwórz na Wear OS

Komponent Nawigacja w Androidzie Jetpack obsługuje aplikacje Jetpack Compose. Można się między nimi poruszać, korzystając z infrastruktury i funkcji komponentu Nawigacja.

Na tej stronie opisujemy różnice związane z nawigacją w aplikacji Jetpack w funkcji tworzenia wiadomości na Wear OS.

Skonfiguruj

Użyj tej zależności w pliku build.gradle modułu aplikacji:

Kotlin


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

Jest on używany zamiast artefaktu androidx.navigation:navigation-compose, ponieważ zapewnia alternatywne implementacje charakterystyczne dla Wear OS.

Tworzenie kontrolera nawigacji, hosta i wykresu

Nawigacja za pomocą funkcji tworzenia wiadomości na Wear OS wymaga tych samych 3 komponentów, które są potrzebne w aplikacjach innych niż Wear OS: kontrolera nawigacji, hosta i wykresu.

Użyj rememberSwipeDismissableNavController(), aby utworzyć instancję WearNavigator, czyli implementację NavController odpowiedniej dla aplikacji na Wear OS:

Kotlin


val navController = rememberSwipeDismissableNavController()

NavController to podstawowy interfejs API używany do poruszania się po aplikacjach do tworzenia wiadomości. Steruje poruszaniem się między elementami kompozycyjnymi na hoście nawigacji, który w systemie Wear OS ma wartość SwipeDismissableNavHost.

Kotlin

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

Podobnie jak kompozycyjny NavHost, ta funkcja odwołuje się do kontrolera nawigacji, trasy dla początkowego miejsca docelowego i konstruktora wykresu nawigacji, który jest pokazany tutaj jako lambda.

Miejsce docelowe rozpoczęcia podróży musi być określone w narzędziu do tworzenia wykresów nawigacyjnych wraz ze wszystkimi innymi miejscami docelowymi, które powinny być dostępne do nawigacji za pomocą kontrolera nawigacji.

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")!!)
    }
}

Więcej informacji o Nawigacji w Jetpack znajdziesz w artykule na temat nawigowania przy użyciu funkcji tworzenia wiadomości oraz w ćwiczeniach z kodowania w aplikacji Jetpack Compose Navigation.