使用 Compose 开发 Wear OS 导航

Android Jetpack 中的导航组件为 Jetpack Compose 应用程序提供支持。您可以利用导航组件的基础结构和功能在可组合项之间导航。

此页面描述了 Wear OS 上 Compose 的 Jetpack 导航的不同之处。

设置

在应用模块的 build.gradle 文件中使用以下依赖项

Kotlin

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 应用程序

Kotlin

val navController = rememberSwipeDismissableNavController()

在 Compose 应用程序中导航使用NavController作为主要 API。它控制在导航主机中的可组合项之间导航,在 Wear OS 上,导航主机为SwipeDismissableNavHost

Kotlin

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

NavHost可组合项类似,它接受对导航控制器的引用、起始目的地的路由以及导航图的构建器,此处显示为尾随 lambda。

起始目的地必须在导航图构建器中提供,以及所有其他应使用导航控制器可导航的目的地。

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 导航,请参阅使用 Compose 导航或参加Jetpack Compose 导航代码实验室