Wear OS এর জন্য কম্পোজ সহ নেভিগেশন


অ্যান্ড্রয়েড জেটপ্যাকের নেভিগেশন কম্পোনেন্টটি জেটপ্যাক কম্পোজ অ্যাপ্লিকেশন সমর্থন করে। আপনি নেভিগেশন কম্পোনেন্টের পরিকাঠামো এবং বৈশিষ্ট্যগুলির সুবিধা নিয়ে কম্পোজেবলগুলির মধ্যে নেভিগেট করতে পারেন।

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

সেটআপ

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

কোটলিন

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

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

একটি ন্যাভিগেশন কন্ট্রোলার, হোস্ট এবং গ্রাফ তৈরি করুন

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

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

val navController = rememberSwipeDismissableNavController()

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

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

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

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

আপনার Wear OS অ্যাপে, সময়, স্ক্রল বা পজিশন ইন্ডিকেটর এবং পেজ ইন্ডিকেটরের মতো টপ-লেভেল কম্পোনেন্টগুলোকে সাপোর্ট করার জন্য AppScaffold এর কন্টেন্ট হিসেবে SwipeDismissableNavHost ডিক্লেয়ার করুন। স্ক্রিনে ডিফল্টভাবে একটি 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
    ) { scaffoldPaddingValues ->
        // Screen content goes here
        // ...

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

{% হুবহু %} {% endverbatim %} {% হুবহু %} {% endverbatim %}