Exemplo de Personalizar Flutter Snackbar
Flutter snackbar
é um widget de material em flutter. Snackbar in flutter é usado para notificar os usuários com uma mensagem curta. Podemos usar o flutter snackbar após uma ação específica, por exemplo: após excluir um arquivo ou quando não há conexão com a Internet disponível e o flutter snackbar é exibido na parte inferior da tela e exibe uma mensagem por um curto período de tempo e desaparece.
O Flutter fornece um widget chamado SnackBar que nos permite adicionar um snackbar ao nosso aplicativo. Portanto, este tutorial mostra como usar um widget de snackbar no flutter com exemplo e também personalizará seu estilo com diferentes propriedades.
Podemos criar snackbar flutter em nosso aplicativo chamando seu construtor e há apenas uma propriedade necessária para criar um snackbar que é content.
Normalmente, usaremos um widget de texto para conteúdo, pois precisamos mostrar alguma mensagem ao usuário.
Podemos usar outros widgets se quisermos.
Para mostrar uma mensagem no snackbar, podemos usar o widget de texto para conteúdo.
Constructor:
SnackBar({ Key? key, required Widget content, Color? backgroundColor, double? elevation, EdgeInsetsGeometry? margin, EdgeInsetsGeometry? padding, double? width, ShapeBorder? shape, SnackBarBehavior? behavior, SnackBarAction? action, Duration duration, Animation<double>? animation, VoidCallback? onVisible })
Conteudo
Mostrando Flutter Snackbar
Você não pode exibir um snackbar continuamente como outros widgets.
Podemos exibir o snackbar para alguma ação realizada no aplicativo, como arquivo excluído ou sem conexão com a internet, portanto, nesses casos, você pode exibir um snackbar para o usuário.
Abaixo está o código para exibir um snackbar em flutter
ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Hi, Flutter developers'), ) );
Flutter Snackbar exemplo de código completo
Vejamos um exemplo onde criamos um botão no flutter e ao clicar no botão mostraremos uma snackbar, também criaremos um método separado onde implementaremos nosso snackbar para abordagem de código limpo, então vamos verificar o código abaixo.
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Snackbar demo'), ), body: SnackBarPage(), ), ); } } class SnackBarPage extends StatelessWidget { const SnackBarPage({Key? key}) : super(key: key); void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Olá, desenvolvedores do Flutter'), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); } @override Widget build(BuildContext context) { return Center( child: MaterialButton( child: Text('Show Snackbar'), color: Colors.blue, textColor: Colors.white, onPressed: () { showSnackBar(context); }, ), ); } }
Propriedades do Flutter Snackbar
As Propriedades de uma Snackbar são:
- backgroundColor
- padding
- shape
- behavior
- width
- margin
- elevation
- duration
- action
- onVisible
Agora vamos ver todas as propriedades do snackbar, uma por uma.
Flutter Snackbar BackgroundColor
Se você quiser alterar a cor de fundo do snackbar para usar a propriedade BackgroundColor, vejamos no código
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Padding
Se você quiser alterar a cor de fundo do snackbar para usar a propriedade BackgroundColor, vejamos no código
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, padding: EdgeInsets.all(20), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Shape
Para alterar a forma do snackbar, use a propriedade shape e estou apenas usando a forma da borda de stadioum no exemplo abaixo
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, shape: StadiumBorder() ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Behavior
Por padrão, o comportamento do snackbar é fixo. Se quisermos alterá-lo, temos que usar a propriedade de comportamento onde fornecemos a constante SnackBarBehavior como valor. O SnackBarBehavior tem duas constantes fixas e flutuantes e se houver um widget BottomNavigationBar presente, o snackbar será exibido acima da navegação inferior se o comportamento for fixo.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Width
Podemos definir ou alterar a largura do snackbar usando a propriedade width.
NOTA: Podemos usar as propriedades de largura, margem e elevação de snackbar somente quando o comportamento é definido como flutuante. Lembre-se também de que temos que usar largura ou margem, mas não ambas para uma snackbar. Fazer isso gerará um erro.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, width: 200, ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Margin
Para definir a margem como snackbar, podemos usar a propriedade margin. A margem nada mais é do que a quantidade de espaço que queremos ao redor da snackbar.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, margin: EdgeInsets.all(50), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Elevation
Podemos alterar a elevação do snackbar usando a propriedade de elevação.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, margin: EdgeInsets.all(50), elevation: 30, ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Duration
Se você quiser alterar a duração de exibição do snackbar, poderá usar a propriedade Duration e fornecer a duração em microssegundos, milissegundos ou minutos.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, duration: Duration(milliseconds: 10000), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Action
Você pode adicionar um botão de ação ao seu snackbar e para isso você precisa usar a propriedade Action do snackbar.
O valor para action é SnackBarAction() e tem quatro propriedades principais.
- label : O nome que queremos exibir para o botão de ação.
- textColor : Para adicionar cor ao texto do actionButton.
- disabledTextColor : A cor do texto a ser exibido quando o botão de ação é desabilitado.
- onPressed : Uma função de retorno de chamada para executar qualquer ação quando clicamos no botão de ação.
void showSnackBar(BuildContext context) { final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, action: SnackBarAction( label: 'Dismiss', disabledTextColor: Colors.white, textColor: Colors.yellow, onPressed: () { //Do whatever you want }, ), ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Saída:
Flutter Snackbar onVisible
Se quisermos executar uma ação quando o snackbar for exibido, podemos fazê-lo dentro da função callback onVisible().
final snackBar = SnackBar( content: Text('Hi, Flutter developers'), backgroundColor: Colors.teal, behavior: SnackBarBehavior.floating, action: SnackBarAction( label: 'Dismiss', disabledTextColor: Colors.white, textColor: Colors.yellow, onPressed: () { //Do whatever you want }, ), onVisible: (){ //your code goes here }, ); ScaffoldMessenger.of(context).showSnackBar(snackBar); }
Então, pessoal, esse é o fim deste tutorial, espero que você entenda como usar o snackbar no flutter e também como personalizá-lo.
Se você tiver alguma dúvida, pode me perguntar na seção de comentários abaixo.
Codificação feliz!