Как реализовать навигацию в Jetpack Compose

«Как реализовать навигацию в Jetpack Compose» — вопрос из категории Jetpack Compose, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Jetpack Compose навигация реализуется через библиотеку navigation-compose. Основные шаги:

  1. Добавь зависимость:
implementation("androidx.navigation:navigation-compose:2.7.7")
  1. Создай NavController:
val navController = rememberNavController()
  1. Определи граф навигации в NavHost:
NavHost(navController = navController, startDestination = "home") {
    composable("home") { HomeScreen(navController) }
    composable("details/{id}") { backStackEntry ->
        DetailsScreen(backStackEntry.arguments?.getString("id"))
    }
}
  1. Переход между экранами:
navController.navigate("details/123") // с параметром
// или 
navController.popBackStack() // назад

Ключевые особенности:

  • Типобезопасность через safe-args (опционально)
  • Поддержка deep links
  • Интеграция с ViewModel
  • Анимации переходов через AnimatedNavHost