Navigation BottomSheet Material3
Cette bibliothèque fournit une solution de navigation pour les projets Compose utilisant les BottomSheets Material3. Elle vous permet de définir vos BottomSheets comme des routes de navigation, éliminant ainsi le besoin des bibliothèques androidx.compose.material.navigation et androidx.compose.material:material !
Cela simplifie les dépendances de votre application et garantit une expérience Material3 cohérente.
Cette bibliothèque exploite également la nouvelle fonctionnalité de androidx.navigation:navigation-compose:2.8.0-beta0X pour vous permettre de définir des routes avec des classes sérialisées.
Implémentation
Vous pouvez suivre l’approche d’implémentation utilisée dans le module app. Sinon, vous trouverez une explication détaillée ci-dessous.
Dépendances
La bibliothèque est maintenant disponible sur MavenCentral !!! Ajoutez les dépendances à votrelibs.versions.toml
[versions]
...
material3Navigation = "X.X.X" current release version[libraries]
...
material3-navigation = { group = "io.github.stefanoq21", name = "material3-navigation", version.ref = "material3Navigation" }
Dans votre build.gradle.kts, implémentez vos dépendances :
...
dependencies {
...
implementation(libs.material3.navigation)
Utilisation
Définissez votre BottomSheetNavigator...
val bottomSheetNavigator =
rememberBottomSheetNavigator(skipPartiallyExpanded = true/false)
val navController = rememberNavController(bottomSheetNavigator)
Ajoutez le ModalBottomSheetLayout au-dessus du composant NavHost et passez le bottomSheetNavigator en paramètre :
ModalBottomSheetLayout(
modifier = Modifier
.fillMaxSize(),
bottomSheetNavigator = bottomSheetNavigator
) {
NavHost(
navController = navController,
startDestination = Screen.Home
) {
...
Définissez vos routes en tant que chaînes de caractères ou classes de données (selon la version de la navigation compose que vous utilisez) :
...
bottomSheet {
BSFullScreenLayout()
}
bottomSheet("BottomSheetFullScreen") {
BSFullScreenLayout()
}
...
Tout est prêt ! Il vous suffit de vous rendre à votre nouvelle destination comme d'habitude :
...
Button(onClick = { navController.navigate(Screen.BottomSheetFullScreen) }) {
Text(text = "BottomSheetFullScreen")
}
...Navigation arrière depuis un Bottom Sheet
Pour implémenter un bouton de retour ou de fermeture dans votre bottom sheet, je suggère d’utiliser onBackPressedDispatcher.onBackPressed(). En effet, si vous utilisez navController.popBackStack(), l’animation ne s’affichera pas. L’animation a été désactivée, dans ce cas, pour éviter des problèmes lors de la navigation qui démarre depuis les bottom sheets.
Personnalisation
La bibliothèque prend actuellement en charge les mêmes options de personnalisation que le androidx.compose.material3.ModalBottomSheet standard. Vous pouvez personnaliser l’apparence de tous les bottom sheets utilisés dans votre graphe de navigation en passant les paramètres au ModalBottomSheetLayout.
Aperçu
Contribution
Nous accueillons avec plaisir les contributions à cette bibliothèque ! Si vous avez des rapports de bugs, des demandes de fonctionnalités ou des améliorations de code, n’hésitez pas à créer une pull request. Je vous remercie de votre aide pour rendre cette bibliothèque encore meilleure.
Licence
Copyright 2024 stefanoq21
Sous licence Apache, Version 2.0 (la « Licence ») ; vous ne pouvez utiliser ce fichier que conformément à la Licence. Vous pouvez obtenir une copie de la Licence à
http://www.apache.org/licenses/LICENSE-2.0
Sauf si la loi en vigueur l’exige ou un accord écrit le stipule, le logiciel distribué sous la Licence est distribué « EN L’ÉTAT », SANS GARANTIES NI CONDITIONS D’AUCUNE SORTE, expresses ou implicites. Consultez la Licence pour connaître les autorisations spécifiques et les limitations régissant la Licence.
--- Tranlated By Open Ai Tx | Last indexed: 2026-01-13 ---