Le composant "snackbar" est une brève notification qui s'affiche au niveau en bas de l'écran. Il fournit des commentaires sur une opération ou une action sans interrompre l'expérience utilisateur. Les snackbars disparaissent au bout de quelques secondes. L'utilisateur peut également les ignorer en effectuant une action, comme appuyer sur un bouton.
Voici trois cas d'utilisation dans lesquels vous pouvez utiliser une barre de navigation :
- Confirmation d'action : lorsqu'un utilisateur supprime un e-mail ou un message, une barre de notification s'affiche pour confirmer l'action et proposer une option "Annuler".
- État du réseau:lorsque l'application perd sa connexion Internet, un snackbar s'affiche. s'affiche pour indiquer qu'il est hors connexion.
- Envoi de données : lorsqu'un formulaire est envoyé ou que des paramètres sont mis à jour, une barre de notification indique que le changement a bien été enregistré.
Exemple de base
Pour implémenter une barre de notification, vous devez d'abord créer SnackbarHost
, qui inclut une propriété SnackbarHostState
. SnackbarHostState
permet d'accéder aux
showSnackbar()
que vous pouvez utiliser pour afficher votre snackbar.
Cette fonction de suspension nécessite un CoroutineScope
, comme lors de l'utilisation
rememberCoroutineScope
, et peut être appelé en réponse à des événements d'interface utilisateur pour
afficher un Snackbar
dans Scaffold
.
val scope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } Scaffold( snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, floatingActionButton = { ExtendedFloatingActionButton( text = { Text("Show snackbar") }, icon = { Icon(Icons.Filled.Image, contentDescription = "") }, onClick = { scope.launch { snackbarHostState.showSnackbar("Snackbar") } } ) } ) { contentPadding -> // Screen content }
Snackbar et action
Vous pouvez ajouter une action facultative et ajuster la durée de Snackbar
.
La fonction snackbarHostState.showSnackbar()
accepte des paramètres actionLabel
et duration
supplémentaires et renvoie un SnackbarResult
.
val scope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } Scaffold( snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, floatingActionButton = { ExtendedFloatingActionButton( text = { Text("Show snackbar") }, icon = { Icon(Icons.Filled.Image, contentDescription = "") }, onClick = { scope.launch { val result = snackbarHostState .showSnackbar( message = "Snackbar", actionLabel = "Action", // Defaults to SnackbarDuration.Short duration = SnackbarDuration.Indefinite ) when (result) { SnackbarResult.ActionPerformed -> { /* Handle snackbar action performed */ } SnackbarResult.Dismissed -> { /* Handle snackbar dismissed */ } } } } ) } ) { contentPadding -> // Screen content }
Vous pouvez fournir une Snackbar
personnalisée avec le paramètre snackbarHost
. Pour en savoir plus, consultez la documentation de référence de l'API SnackbarHost
.