L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

android-navigation-3

android-navigation-3

Install and migrate to Jetpack Navigation 3. Use when implementing Navigation 3 patterns including NavDisplay, NavKey routes, deep links, multiple backstacks, scenes (dialogs, bottom sheets), or migrating from Navigation 2.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: android-navigation-3 description: Install and migrate to Jetpack Navigation 3. Use when implementing Navigation 3 patterns including NavDisplay, NavKey routes, deep links, multiple backstacks, scenes (dialogs, bottom sheets), or migrating from Navigation 2. metadata: triggers: files: - '/*NavHost.kt' - '/Navigation.kt' - '**/*Screen.kt' keywords: - Navigation 3 - NavDisplay - NavKey - NavEntry - migrate navigation - multiple backstacks - nav3

Jetpack Navigation 3

Priority: P1 (HIGH)

Guide for implementing and migrating to Navigation 3 in Jetpack Compose.

Core concepts

Navigation 3 replaces the previous NavHost/NavController pattern with a simpler, state-driven approach:

  • Routes are Kotlin data objects/classes (not strings).
  • Back stack is a plain mutableStateListOf<Any>.
  • NavDisplay renders the current route based on a lambda.

Basic usage

val backStack = remember { mutableStateListOf<Any>(RouteHome) }

NavDisplay(
    backStack = backStack,
    onBack = { backStack.removeLastOrNull() },
    entryProvider = { key ->
        when (key) {
            is RouteHome -> NavEntry(key) { HomeScreen(onNavigate = { backStack.add(it) }) }
            is RouteDetail -> NavEntry(key) { DetailScreen(key.id) }
            else -> error("Unknown route: $key")
        }
    }
)

Migration from Navigation 2

See migration guide for step-by-step conversion from NavHost/NavController to NavDisplay.

Key changes:

  1. Replace string routes with data objects/classes.
  2. Replace NavHost with NavDisplay.
  3. Replace NavController.navigate() with direct list manipulation.
  4. Replace navArgument with data class properties.

Common patterns

See recipes for code examples:

  • Basic navigation with arguments
  • Bottom navigation with multiple backstacks
  • Deep links (basic and with synthetic backstack)
  • Dialogs and bottom sheets
  • Conditional navigation (auth flows)
  • Returning results between screens
  • Modularized navigation with Hilt or Koin

Verification

  • Routes are data objects/classes, no string-based routing.
  • Back stack is a mutableStateListOf<Any>.
  • NavDisplay handles all routes in entryProvider.
  • ./gradlew build succeeds.

Anti-Patterns

  • No string-based routes: Use Kotlin data objects/classes for type safety.
  • No NavController for new projects: Use NavDisplay with a state list.
  • No remember { navController() }: Navigation 3 doesn't use NavController.

References

Skills enregistrées