Kotlin DSL ve Navigation Compose'da güvenlik türü yazın

Hem yerleşik hem de güvenli API'leri kullanarak gezinme grafiğidir. Bu API'ler, uygulamanızda Gezinme Oluşturma veya Gezinme Kotlin DSL Navigation 2.8.0 itibarıyla kullanılabilirler.

Bu API'ler, Güvenli Bağımsız Değişkenler'in gezinme grafiklerine sağladığıyla eşdeğerdir geliştirmenizi sağlar.

Rotaları tanımlama

Compose'da tür güvenli rotaları kullanmak için önce seri hale getirilebilir yolları tanımlamanız gerekir sınıfları veya nesneleri gösterir.

  • Nesne: Bağımsız değişkensiz rotalar için bir nesne kullanın.
  • Sınıf: Bağımsız değişkenler içeren rotalar için bir sınıf veya veri sınıfı kullanın.
  • KClass<T>: Sınıf gibi bağımsız değişkenleri iletmeniz gerekmiyorsa kullanın parametre içermeyen veya tüm parametrelerin varsayılan değerlere sahip olduğu bir sınıf
    1. Örneğin: Profile::class

Her iki durumda da nesne veya sınıf seri hale getirilebilir olmalıdır.

Örnek:

// 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)

Grafiğinizi oluşturun

Daha sonra, gezinme grafiğinizi tanımlamanız gerekir. composable()'ı kullanma işlevini kullanabilirsiniz.

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

Bu örnekte aşağıdakileri gözlemleyin:

  • composable(), bir tür parametresi alır. Yani, composable<Profile>
  • Hedef türünü tanımlamak, bir hedefi tanımlamak yerine composable("profile") itibarıyla route dize.
  • Rota sınıfı, her bir gezinme bağımsız değişkeninin türünü aşağıdaki gibi tanımlar: val id: String olduğundan NavArgument öğesine gerek yoktur.
  • toRoute() uzantı yöntemi, profil rotası için NavBackStackEntry öğesinden Profile nesne ve bağımsız değişkenlerdir.

Grafiğinizi genel olarak nasıl tasarlayacağınızla ilgili daha fazla bilgi için Tasarım Gezinme grafiği sayfanızda gösterilir.

Son olarak, navigate() kullanarak composable'ınıza gidebilirsiniz fonksiyonunu çağırın:

navController.navigate(Profile(id = 123))

Bu işlem, kullanıcıyı composable<Profile> hedefine yönlendirir gezinme grafiğidir. id gibi gezinme bağımsız değişkenleri, NavBackStackEntry.toRoute kullanarak Profile yeniden oluşturma ve özellikler.

Ek kaynaklar