为什么使用 "sealed class" 并在导航中创建对象? (Kotlin Jetpack Compose)

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

我听说最流行的定义屏幕和路由的方法是使用 sealed class
但是我不能那样直观地理解。

首先是为什么使用密封class。还有其他 classes,包括默认的 class.

第二个是为什么在密封的class.
中使用object 我认为第二个问题与单身人士有关。但是为什么screen要单例呢?

这是我看到的代码

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

sealed class 是一个不错的选择,当你有路由 with arguments, like shown in Jetcaster Compose sample app:

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

如果您在任何路由中都没有参数,则可以使用 enum class 代替,如 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)
}