Wear OS के लिए, लिखने की सुविधा का इस्तेमाल करके नेविगेशन


Android Jetpack में मौजूद नेविगेशन कॉम्पोनेंट, Jetpack Compose ऐप्लिकेशन के लिए सहायता उपलब्ध कराता है. नेविगेशन कॉम्पोनेंट के इन्फ़्रास्ट्रक्चर और सुविधाओं का फ़ायदा लेते हुए, एक से दूसरे कॉम्पोज़ेबल पर नेविगेट किया जा सकता है.

इस पेज पर, Wear OS के लिए Compose में Jetpack नेविगेशन के साथ अंतर के बारे में बताया गया है.

सेटअप

अपने ऐप्लिकेशन मॉड्यूल की build.gradle फ़ाइल में, नीचे दी गई डिपेंडेंसी का इस्तेमाल करें:

Kotlin

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

इसका इस्तेमाल, androidx.navigation:navigation-compose आर्टफ़ैक्ट के बदले किया जाता है, क्योंकि यह Wear OS के लिए खास तौर पर लागू होने वाले अन्य विकल्प उपलब्ध कराता है.

नेविगेशन कंट्रोलर, होस्ट, और ग्राफ़ बनाना

Wear OS के लिए Compose का इस्तेमाल करके नेविगेट करने के लिए, उन तीन कॉम्पोनेंट की ज़रूरत होती है जो Wear OS के अलावा अन्य ऐप्लिकेशन के लिए भी ज़रूरी होते हैं: नेविगेशन कंट्रोलर, होस्ट, और ग्राफ़.

WearNavigator का इंस्टेंस बनाने के लिए, rememberSwipeDismissableNavController() का इस्तेमाल करें. यह Wear OS ऐप्लिकेशन के लिए सही NavController का एक उदाहरण है:

Kotlin

val navController = rememberSwipeDismissableNavController()

NavController, Compose ऐप्लिकेशन में नेविगेट करने के लिए इस्तेमाल किया जाने वाला मुख्य एपीआई है. यह नेविगेशन होस्ट में, एक कॉम्पोनेंसे से दूसरे कॉम्पोनेंसे पर जाने की सुविधा को कंट्रोल करता है. Wear OS पर, यह सुविधा SwipeDismissableNavHost है.

Kotlin

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

NavHost कॉम्पोज़ेबल की तरह ही, यह नेविगेशन कंट्रोलर, शुरू करने के डेस्टिनेशन के रास्ते, और नेविगेशन ग्राफ़ के बिल्डर का रेफ़रंस लेता है. नेविगेशन ग्राफ़ के बिल्डर को यहां ट्रैलिंग लैम्ब्डा के तौर पर दिखाया गया है.

नेविगेशन ग्राफ़ बिल्डर में, शुरुआती डेस्टिनेशन के साथ-साथ उन सभी डेस्टिनेशन की जानकारी देनी होगी जिन पर नेविगेशन कंट्रोलर की मदद से पहुंचा जा सकता है.

अपने Wear OS ऐप्लिकेशन में, समय, स्क्रोल/पोज़िशन इंडिकेटर, और पेज इंडिकेटर जैसे टॉप-लेवल कॉम्पोनेंट के साथ काम करने के लिए, SwipeDismissableNavHost को AppScaffold के कॉन्टेंट के तौर पर दिखाएं. स्क्रीन पर डिफ़ॉल्ट रूप से TimeText ऑब्जेक्ट जोड़ने के लिए, स्क्रीन लेवल पर SwipeDismissableNavHost के ऊपर AppScaffold ऑब्जेक्ट और ScreenScaffold का इस्तेमाल करें. इससे यह भी पक्का किया जा सकता है कि स्क्रीन के बीच नेविगेट करते समय, ऑब्जेक्ट सही तरीके से ऐनिमेट हो. इसके अलावा, स्क्रोल किए जा सकने वाले कॉन्टेंट के लिए 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")!!)
            }
        }
    }
}

// Implementation of one of the screens in the navigation
@Composable
fun MessageDetail(id: String) {
    // .. Screen level content goes here
    val scrollState = rememberTransformingLazyColumnState()

    val padding = rememberResponsiveColumnPadding(
        first = ColumnItemType.BodyText
    )

    ScreenScaffold(
        scrollState = scrollState,
        contentPadding = padding
    ) {
        // Screen content goes here

Jetpack नेविगेशन के बारे में ज़्यादा जानने के लिए, Compose का इस्तेमाल करके नेविगेट करना लेख पढ़ें या Jetpack Compose नेविगेशन कोड लैब में हिस्सा लें.