Navigation

https://developer.android.com/guide/navigation
https://developer.android.com/guide/navigation/navcontroller
29.09.2024https://youtu.be/BFhVvAzC52w
Type safety Navigation
https://developer.android.com/guide/navigation/design/type-safety

Обеспечивает проверку типов на этапе компиляции при работе с навигационными графами.

• Определение маршрутов: Для маршрутов без аргументов используется object, а для маршрутов с аргументами — сериализуемые классы или data-классы.

@Serializable
object Home

@Serializable
data class Profile(val id: String)

• Построение графа навигации: Используя функции composable<T>, можно определить навигационные графы с типобезопасными маршрутами.

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

• Навигация с аргументами: Для перехода к определенному маршруту с аргументами используется метод navigate(), принимающий экземпляр маршрута.

navController.navigate(Profile(id = "123"))