پیمایش با Compose for Wear OS


کامپوننت Navigation در اندروید جت‌پک از برنامه‌های Jetpack Compose پشتیبانی می‌کند. می‌توانید در حین استفاده از زیرساخت و ویژگی‌های کامپوننت Navigation، بین کامپوننت‌های قابل ترکیب (composables) حرکت کنید.

این صفحه تفاوت‌های Jetpack Navigation در Compose برای Wear OS را شرح می‌دهد.

راه‌اندازی

از وابستگی زیر در فایل build.gradle ماژول برنامه خود استفاده کنید:

کاتلین

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

این به جای artifact مربوط به androidx.navigation:navigation-compose استفاده می‌شود زیرا پیاده‌سازی‌های جایگزینی مختص Wear OS ارائه می‌دهد.

ایجاد یک کنترلر ناوبری، میزبان و گراف

پیمایش با Compose برای Wear OS به همان سه مؤلفه مورد نیاز در برنامه‌های غیر Wear OS نیاز دارد: کنترل‌کننده پیمایش، میزبان و نمودار.

rememberSwipeDismissableNavController() برای ایجاد یک نمونه از WearNavigator ، که یک پیاده‌سازی از NavController مناسب برای برنامه‌های Wear OS است، استفاده کنید:

val navController = rememberSwipeDismissableNavController()

NavController رابط برنامه‌نویسی کاربردی (API) اصلی مورد استفاده برای پیمایش در برنامه‌های Compose است. این رابط، پیمایش بین composableها را در میزبان ناوبری که در Wear OS، SwipeDismissableNavHost است، کنترل می‌کند.

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

مانند NavHost composable ، این کامپوننت نیز به کنترلر ناوبری، مسیر برای مقصد شروع و سازنده‌ی گراف ناوبری که در اینجا به صورت یک لامبدا دنباله‌دار نشان داده شده است، ارجاع می‌دهد.

مقصد شروع باید در سازنده نمودار ناوبری، به همراه تمام مقاصد دیگری که باید با کنترل‌کننده ناوبری قابل پیمایش باشند، ارائه شود.

در برنامه Wear OS خود، SwipeDismissableNavHost به عنوان یک محتوای AppScaffold تعریف کنید تا از اجزای سطح بالا مانند زمان، نشانگر اسکرول یا موقعیت و نشانگر صفحه پشتیبانی کند. از یک شیء AppScaffold بالای SwipeDismissableNavHost و ScreenScaffold در سطح صفحه استفاده کنید تا یک شیء 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 padding = rememberResponsiveColumnPadding(
        first = ColumnItemType.BodyText
    )

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

برای کسب اطلاعات بیشتر در مورد ناوبری Jetpack، به ناوبری با Compose مراجعه کنید یا در آزمایشگاه کد ناوبری Jetpack Compose شرکت کنید.

{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل کمکی %}