Navigazione con Compose per Wear OS

Il componente Navigazione in Android Jetpack fornisce supporto per le applicazioni Jetpack Compose. Puoi navigare tra i componibili sfruttando al contempo l'infrastruttura e le funzionalità del componente Navigazione.

In questa pagina vengono descritte le differenze con Jetpack Navigation su Compose per Wear OS.

Configurazione

Utilizza la dipendenza seguente nel file build.gradle del modulo dell'app:

Kotlin


dependencies {
    def wear_compose_version = "1.3.1"
    implementation "androidx.wear.compose:compose-navigation:$wear_compose_version"
}

Viene utilizzato al posto dell'elemento androidx.navigation:navigation-compose perché fornisce implementazioni alternative specifiche per Wear OS.

Crea un controller di navigazione, un host e un grafico

La navigazione con Scrivi per Wear OS richiede gli stessi tre componenti necessari sulle app non Wear OS: controller di navigazione, host e grafico.

Utilizza rememberSwipeDismissableNavController() per creare un'istanza di WearNavigator, un'implementazione NavController adatta alle applicazioni Wear OS:

Kotlin


val navController = rememberSwipeDismissableNavController()

NavController è l'API principale utilizzata per navigare nelle applicazioni Compose. Consente di controllare la navigazione tra gli elementi componibili nell'host di navigazione, che su Wear OS è SwipeDismissableNavHost.

Kotlin

val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(
    navController = navController,
    startDestination = "message_list"
) {
    // TODO: build navigation graph
}

Come il componibile NavHost, prende un riferimento al controller di navigazione, al percorso per la destinazione di partenza e al builder per il grafico di navigazione, mostrato qui come lambda finale.

La destinazione di partenza deve essere fornita nel generatore di grafici di navigazione, insieme a tutte le altre destinazioni che devono essere navigabili con il controller di navigazione.

Kotlin

val navController = rememberSwipeDismissableNavController()
SwipeDismissableNavHost(
    navController = navController,
    startDestination = "message_list"
) {
    composable("message_list") {
        MessageList(onMessageClick = { id ->
            navController.navigate("message_detail/$id")
        })
    }
    composable("message_detail/{id}") {
        MessageDetail(id = it.arguments?.getString("id")!!)
    }
}

Per scoprire di più su Jetpack Navigation, consulta Navigazione con Compose o segui il Codelab relativo alla navigazione Jetpack Compose.