Wear OS-এর জন্য Compose-এর মাধ্যমে নেভিগেশন


Android Jetpack-এর নেভিগেশন কম্পোনেন্ট Jetpack Compose অ্যাপ্লিকেশনের জন্য সাপোর্ট প্রদান করে। আপনি নেভিগেশন কম্পোনেন্টের ইনফ্রাস্ট্রাকচার ও ফিচার ব্যবহার করার সুবিধা নিয়ে কম্পোজ করার উপযুক্ত আইটেমের মধ্যে নেভিগেট করতে পারবেন।

এই পৃষ্ঠায় Wear OS-এর জন্য Compose-এ Jetpack Navigation-এর সাথে পার্থক্য বর্ণনা করা হয়েছে।

সেট-আপ করুন

আপনার অ্যাপ মডিউলের build.gradle ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি ব্যবহার করুন:

Kotlin

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

Wear OS-এর জন্য নির্দিষ্ট বিকল্প প্রয়োগ প্রদান করে বলে এটি androidx.navigation:navigation-compose আর্টিফ্যাক্টের পরিবর্তে ব্যবহার করা হয়।

নেভিগেশন কন্ট্রোলার, হোস্ট ও গ্রাফ তৈরি করা

Wear OS-এর জন্য Compose-এর মাধ্যমে নেভিগেট করতে, Wear OS নয় এমন অ্যাপে প্রয়োজন হয় এমন একই তিনটি কম্পোনেন্ট প্রয়োজন: নেভিগেশন কন্ট্রোলার, হোস্ট ও গ্রাফ।

Wear OS অ্যাপ্লিকেশনের জন্য উপযুক্ত NavController-এর একটি ইমপ্লিমেন্টেশন, WearNavigator-এর ইনস্ট্যান্স তৈরি করতে rememberSwipeDismissableNavController() ব্যবহার করুন:

val navController = rememberSwipeDismissableNavController()

Compose অ্যাপ্লিকেশনে নেভিগেট করার জন্য NavController হল প্রাথমিক API। এটি নেভিগেশন হোস্টের মধ্যে কম্পোজ করার সুবিধা কন্ট্রোল করে, যা Wear OS-এ SwipeDismissableNavHost।

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

NavHost কম্পোজ করার উপযুক্ত আইটেমের মতো, এটি নেভিগেশন কন্ট্রোলারের রেফারেন্স, শুরুর গন্তব্যের রুট এবং নেভিগেশন গ্রাফের জন্য বিল্ডার নেয়, যা এখানে ট্রেলিং ল্যাম্বডা হিসেবে দেখানো হয়েছে।

নেভিগেশন গ্রাফ বিল্ডারে শুরুর গন্তব্য অবশ্যই দিতে হবে, এর সাথে নেভিগেশন কন্ট্রোলারের মাধ্যমে নেভিগেট করা যাবে এমন সব গন্তব্যও দিতে হবে।

আপনার Wear OS অ্যাপে, SwipeDismissableNavHost-কে AppScaffold-এর কন্টেন্ট হিসেবে ঘোষণা করুন, যাতে সময়, স্ক্রল বা পজিশন ইন্ডিকেটর ও পেজ ইন্ডিকেটরের মতো টপ-লেভেল কম্পোনেন্ট কাজ করতে পারে। স্ক্রিন লেভেলে SwipeDismissableNavHost ও ScreenScaffold-এর উপরে AppScaffold অবজেক্ট ব্যবহার করুন, যাতে ডিফল্ট হিসেবে স্ক্রিনে 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")!!)
            }
        }
    }
}

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

    ScreenScaffold(
        scrollState = scrollState,
    ) { contentPadding ->
        // Screen content goes here
        // ...

Jetpack Navigation সম্পর্কে আরও জানতে, Compose-এর মাধ্যমে নেভিগেট করা দেখুন অথবা Jetpack Compose Navigation কোড ল্যাব দেখুন।