Как бы реализовал навигацию в приложении, используя Compose

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

Ответ

Для навигации в Jetpack Compose используем библиотеку navigation-compose. Основные компоненты:

  1. NavHost – контейнер для навигации
  2. NavController – управляет маршрутами
  3. composable() – объявляет экраны

Пример реализации:

@Composable
fun AppNavigation() {
    val navController = rememberNavController()

    NavHost(navController, startDestination = "main") {
        composable("main") { MainScreen(navController) }
        composable("details/{id}") { backStackEntry ->
            val id = backStackEntry.arguments?.getString("id")
            DetailsScreen(id)
        }
    }
}

// Навигация между экранами:
navController.navigate("details/123")

Ключевые моменты:

  • Используйте rememberNavController() для сохранения состояния
  • Передавайте параметры через маршрут (/{param})
  • Для сложных объектов используйте NavType.SerializableType
  • Для глубоких ссылок – navDeepLink
  • Для анимации переходов – Modifier.navigationAnimation()