Навигация с помощью 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 , он принимает ссылку на навигационный контроллер, маршрут для начального пункта назначения и построитель навигационного графа, который показан здесь как завершающую лямбду.

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

В приложении Wear OS объявите SwipeDismissableNavHost как содержимое Scaffold для поддержки компонентов верхнего уровня, таких как время, индикатор прокрутки/положения и индикатор страницы. Используйте объект Horologies AppScaffold над SwipeDismissableNavHost и Horologies ScreenScaffold на уровне экрана, чтобы добавить объект TimeText на экран по умолчанию и убедиться, что он правильно анимируется при навигации между экранами. Кроме того, ScreenScaffold добавляет PositionIndicator для прокручиваемого содержимого.

AppScaffold {
    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")!!)
        }
    }
}
// ...
// .. Screen level content goes here
val scrollState = rememberScrollState()

ScreenScaffold(scrollState = scrollState) {
    // Screen content goes here

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

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