التنقّل باستخدام ميزة الإنشاء في نظام التشغيل Wear OS

يقدّم مكوّن التنقّل في Android Jetpack دعمًا لتطبيقات Jetpack Compose. يمكنك التنقّل بين العناصر القابلة للتجميع مع الاستفادة من البنية الأساسية لعنصر التنقّل و ميزاته.

توضّح هذه الصفحة الاختلافات مع Jetpack Navigation في Compose لنظام التشغيل Wear.

ضبط إعدادات الجهاز

استخدِم التبعية التالية في ملف index.gradle الخاص بوحدة تطبيقك:

Kotlin

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

يتم استخدام هذا العنصر بدلاً من العنصر androidx.navigation:navigation-compose لأنّه يقدّم عمليات تنفيذ بديلة خاصة بنظام التشغيل Wear OS.

إنشاء وحدة تحكّم في التنقّل ومضيف ورسم بياني

يتطلب التنقّل باستخدام Compose لنظام التشغيل Wear OS المكونات الثلاثة نفسها المطلوبة في التطبيقات غير المتوافقة مع Wear OS: وحدة التحكّم في التنقّل والمضيف والرسم البياني.

استخدِم rememberSwipeDismissableNavController() لإنشاء مثيل من WearNavigator، وهو تطبيق NavController مناسب لتطبيقات Wear OS:

Kotlin

val navController = rememberSwipeDismissableNavController()

NavController هي واجهة برمجة التطبيقات الأساسية المستخدمة للتنقّل في تطبيقات Compose. وتتحكّم هذه العلامة في التنقّل بين العناصر القابلة للتجميع في مضيف التنقّل الذي يمثّل رمزه على نظام التشغيل Wear OS هو SwipeDismissableNavHost.

Kotlin

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

مثل العنصر القابل للتركيب NavHost، فإنه يأخذ إشارة إلى وحدة التحكّم في التنقّل ومسار الوجهة الأولية وباني الرسم البياني للتنقّل الذي يظهر هنا كدالّة lambda متأخرة.

يجب توفير وجهة البدء في أداة إنشاء الرسم البياني للتنقّل، بالإضافة إلى جميع الوجهات الأخرى التي يجب أن يكون بالإمكان التنقّل بينها باستخدام أداة التحكّم في التنقّل.

في تطبيق Wear OS، يجب الإفصاح عن SwipeDismissableNavHost كمحتوى Scaffold لسماح التطبيق باستخدام المكوّنات ذات المستوى الأعلى، مثل الوقت ومؤشر التمرير/الموضع ومؤشر الصفحة. استخدِم عنصر Horologist AppScaffold فوق SwipeDismissableNavHost و Horologist 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")!!)
        }
    }
}
// ...
// .. Screen level content goes here
val scrollState = rememberScrollState()

ScreenScaffold(scrollState = scrollState) {
    // Screen content goes here

للمزيد من المعلومات حول ميزة التنقّل في Jetpack، يمكنك الاطّلاع على القسم التنقّل باستخدام Compose أو الانتقال إلى الميزة الاختبارية لرموز التنقّل في Jetpack Compose.