Wear OS için Compose ile gezinme

Android Jetpack'teki Gezinme bileşeni, Jetpack Compose uygulamaları için destek sağlar. Gezinme bileşeninin altyapısından ve özelliklerinden yararlanırken composable'lar arasında gezinebilirsiniz.

Bu sayfada, Wear OS için Compose'da Jetpack Navigasyon ile ilgili farklılıklar açıklanmaktadır.

Kurulum

Uygulama modülünüzün build.gradle dosyasında aşağıdaki bağımlılığı kullanın:

Kotlin


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

Bu, Wear OS'e özel alternatif uygulamalar sunduğundan androidx.navigation:navigation-compose yapısının yerine kullanılır.

Gezinme denetleyicisi, ana makinesi ve grafik oluşturun

Wear OS için Compose ile gezinmek için Wear OS dışı uygulamalarda gereken üç bileşen gerekir: gezinme denetleyicisi, ana makine ve grafik.

Wear OS uygulamalarına uygun olan bir NavController uygulaması olan WearNavigator örneğini oluşturmak için rememberSwipeDismissableNavController() işlevini kullanın:

Kotlin


val navController = rememberSwipeDismissableNavController()

NavController, Compose uygulamalarında gezinmek için kullanılan birincil API'dir. Wear OS'te SwipeDismissableNavHost olan gezinme ana makinesinde composable'lar arasında gezinmeyi kontrol eder.

Kotlin

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

NavHost composable'da olduğu gibi, gezinme denetleyicisine, başlangıç hedefinin rotasına ve burada izleyen lambda olarak gösterilen gezinme grafiğine ait oluşturucuya referans verir.

Başlangıç hedefi, gezinme grafiği oluşturucuda ve gezinme denetleyicisiyle gidilebilmesi gereken diğer tüm hedeflerde sağlanmalıdır.

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 Navigasyon hakkında daha fazla bilgi edinmek için Compose ile gezinme sayfasına bakın veya Jetpack Compose navigasyon kodu laboratuvarına katılın.