Навигация с помощью Compose for Wear OS

Компонент навигации в Android Jetpack обеспечивает поддержку приложений Jetpack Compose. Вы можете перемещаться между составными объектами, используя преимущества инфраструктуры и функций компонента навигации.

На этой странице описаны различия с Jetpack Navigation в Compose for Wear OS.

Настраивать

Используйте следующую зависимость в файле build.gradle вашего модуля приложения:

Котлин


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

Он используется вместо артефакта androidx.navigation:navigation-compose поскольку он предоставляет альтернативные реализации, специфичные для Wear OS.

Создайте навигационный контроллер, хост и график.

Для навигации с помощью Compose для Wear OS требуются те же три компонента, что и в приложениях, отличных от Wear OS: контроллер навигации, хост и график.

Используйте rememberSwipeDismissableNavController() , чтобы создать экземпляр WearNavigator , реализацию NavController , подходящую для приложений Wear OS:

Котлин


val navController = rememberSwipeDismissableNavController()

NavController — это основной API, используемый для навигации в приложениях Compose. Он управляет навигацией между составными объектами в навигационном узле, которым в Wear OS является SwipeDismissableNavHost .

Котлин

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

Как и компонуемый NavHost , он принимает ссылку на навигационный контроллер, маршрут для начального пункта назначения и построитель навигационного графа, который показан здесь как завершающую лямбду.

Начальный пункт назначения должен быть указан в построителе навигационных графов вместе со всеми другими пунктами назначения, по которым должна быть доступна навигация с помощью навигационного контроллера.

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

Чтобы узнать больше о Jetpack Navigation, см. раздел «Навигация с помощью Compose» или пройдите лабораторную работу по коду Jetpack Compose Navigation .

{% дословно %} {% дословно %} {% дословно %} {% дословно %}