ایمنی را در Kotlin DSL و Navigation Compose تایپ کنید

می‌توانید از APIهای ایمن نوع داخلی برای ارائه ایمنی نوع کامپایل برای نمودار ناوبری خود استفاده کنید. این APIها زمانی در دسترس هستند که برنامه شما از Navigation Compose یا Navigation Kotlin DSL استفاده کند. آنها از Navigation 2.8.0 در دسترس هستند.

این APIها معادل چیزی هستند که Safe Args برای نمودارهای ناوبری ساخته شده با استفاده از XML فراهم می کند.

مسیرها را تعریف کنید

برای استفاده از مسیرهای ایمن نوع در Compose، ابتدا باید کلاس‌ها یا اشیایی قابل سریال‌سازی را تعریف کنید که مسیرهای شما را نشان می‌دهند.

برای تعریف اشیاء قابل سریال سازی از حاشیه نویسی @Serializable ارائه شده توسط افزونه Kotlin Serialization استفاده کنید. این افزونه را می توان با افزودن این وابستگی ها به پروژه شما اضافه کرد.

از قوانین زیر برای تصمیم گیری در مورد نوع مسیر خود استفاده کنید:

  • Object : از یک شی برای مسیرهای بدون آرگومان استفاده کنید.
  • کلاس : از یک کلاس یا کلاس داده برای مسیرهای دارای آرگومان استفاده کنید.
  • KClass<T> : اگر نیازی به ارسال آرگومان ندارید، مانند کلاس بدون پارامتر، یا کلاسی که همه پارامترها دارای مقادیر پیش فرض هستند، استفاده کنید.
    1. به عنوان مثال: Profile::class

در همه موارد، شی یا کلاس باید سریال‌پذیر باشد.

به عنوان مثال:

// Define a home route that doesn't take any arguments
@Serializable
object Home

// Define a profile route that takes an ID
@Serializable
data class Profile(val id: String)

نمودار خود را بسازید

بعد، باید نمودار ناوبری خود را تعریف کنید. از تابع composable() برای تعریف composable ها به عنوان مقصد در نمودار ناوبری خود استفاده کنید.

NavHost(navController, startDestination = Home) {
     composable<Home> {
         HomeScreen(onNavigateToProfile = { id ->
             navController.navigate(Profile(id))
         })
     }
     composable<Profile> { backStackEntry ->
         val profile: Profile = backStackEntry.toRoute()
         ProfileScreen(profile.id)
     }
}

در این مثال به موارد زیر توجه کنید:

  • composable() یک پارامتر نوع می گیرد. یعنی composable<Profile> .
  • تعریف نوع مقصد رویکرد قوی‌تری نسبت به عبور