Le composant Navigation d'Android Jetpack est compatible avec les applications Jetpack Compose. Vous pouvez naviguer entre les composables tout en tirant parti de l'infrastructure et des fonctionnalités du composant Navigation.
Cette page décrit les différences par rapport au composant Navigation de Jetpack sur Compose pour Wear OS.
Configuration
Utilisez la dépendance suivante dans le fichier build.gradle de votre module d'application :
Kotlin
dependencies { def wear_compose_version = "1.6.2" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
Ce code est utilisé à la place de l'artefact androidx.navigation:navigation-compose, car il fournit d'autres implémentations spécifiques à Wear OS.
Créer un contrôleur de navigation, un hôte et un graphique
Pour naviguer avec Compose pour Wear OS, vous avez besoin des trois mêmes composants que ceux qui sont requis pour les applications non Wear OS, à savoir le contrôleur de navigation, l'hôte et le graphique.
Utilisez
rememberSwipeDismissableNavController()
pour créer une instance de WearNavigator, une implémentation de NavController
adaptée aux applications Wear OS :
val navController = rememberSwipeDismissableNavController()
Le NavController est
l'API principale utilisée pour naviguer dans les applications Compose. Elle contrôle la navigation
entre les composables dans l'hôte de navigation, qui est
SwipeDismissableNavHost sur Wear OS.
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
Comme le
NavHost composable,
elle utilise une référence au contrôleur de navigation, la route de la destination de départ et le compilateur du graphique de navigation indiqué ici sous la forme d'un lambda de fin.
La destination de départ doit être fournie dans le compilateur du graphique de navigation, avec toutes les autres destinations qu'il doit être possible de parcourir avec le contrôleur de navigation.
Dans votre application Wear OS, déclarezSwipeDismissableNavHost comme contenu de
AppScaffold pour prendre en charge les composants de premier niveau tels que l'heure, l'indicateur de défilement ou
de position, et l'indicateur de page.
Utilisez un AppScaffold objet au-dessus de SwipeDismissableNavHost
et le ScreenScaffold au niveau de l'écran pour ajouter un TimeText objet
à l'écran par défaut et vous assurer qu'il s'anime correctement lors de la navigation
entre les écrans.
De plus, ScreenScaffold ajoute un PositionIndicator pour le contenu à faire défiler.
AppScaffold { 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")!!) } } } } // Implementation of one of the screens in the navigation @Composable fun MessageDetail(id: String) { // .. Screen level content goes here val scrollState = rememberTransformingLazyColumnState() val padding = rememberResponsiveColumnPadding( first = ColumnItemType.BodyText ) ScreenScaffold( scrollState = scrollState, contentPadding = padding ) { scaffoldPaddingValues -> // Screen content goes here // ...
Pour en savoir plus sur le composant Navigation de Jetpack, consultez Naviguer avec Compose ou accédez à l' atelier de programmation Navigation de Jetpack Compose.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- Migrer la navigation Jetpack vers la navigation Compose
- Navigation avec Compose
- Naviguer entre les écrans avec Compose