簡體   English   中英

為什么使用“密封類”並在導航中創建對象? (Kotlin Jetpack Compose)

[英]Why use "sealed class" and make object in Navigation? (Kotlin Jetpack Compose)

我聽說定義屏幕和路由的最流行的方法是使用密封類
但我不能這樣直觀地理解。

首先是為什么使用密封類 還有其他類,包括默認類。

第二個是為什么在密封類中使用對象
我認為第二個問題與單身人士有關。 但是為什么 screen 應該是一個單例呢?

這是我看到的代碼

sealed class Screen(val route: String) {
    object Home: Screen(route = "home_screen")
    object Detail: Screen(route = "detail_screen")
}

當您有帶參數的路由時,密封類是一個不錯的選擇,如Jetaster Compose 示例應用程序中所示:

sealed class Screen(val route: String) {
    object Home : Screen("home")
    object Player : Screen("player/{episodeUri}") {
        fun createRoute(episodeUri: String) = "player/$episodeUri"
    }
}

如果您的任何路由中都沒有參數,則可以改用枚舉類,如Owl Compose 示例應用程序中所示:

enum class CourseTabs(
    @StringRes val title: Int,
    @DrawableRes val icon: Int,
    val route: String
) {
    MY_COURSES(R.string.my_courses, R.drawable.ic_grain, CoursesDestinations.MY_COURSES_ROUTE),
    FEATURED(R.string.featured, R.drawable.ic_featured, CoursesDestinations.FEATURED_ROUTE),
    SEARCH(R.string.search, R.drawable.ic_search, CoursesDestinations.SEARCH_COURSES_ROUTE)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM