Você está aqui: Flutter ::: Material Library - Biblioteca Material ::: AlertDialog

Aprenda a usar caixas de alerta AlertDialog em seus aplicativos Flutter

Quantidade de visualizações: 2642 vezes
Em várias ocasiões nós precisamos de caixas de avisos, ou caixas de alerta em nossos apps Flutter. Para isso nós temos a classe AlertDialog, da biblioteca de widgets Material. Veja sua posição na hierarquia de classes do Flutter e do Material:

Object -> DiagnosticableTree -> Widget -> StatelessWidget -> AlertDialog

Note que um diálogo de alerta é um widget StatelessWidget, ou seja, o usuário não consegue interagir com ele, a não ser clicar no botão de fechar. Se você pretende exibir um diálogo de alerta com mais possibilidades de iteração, considere usar a classe SimpleDialog.

Veja um código completo para uma aplicação Flutter que exibe uma mensagem de alerta quando o usuário clicar em um botão:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import 'package:flutter/material.dart';

// método principal do Dart, que inicia a aplicação
void main() {
  runApp(MeuApp());
}

class MeuApp extends StatelessWidget {
  // Este  widget é a raiz da aplicação Flutter
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Caixa de alerta AlertDialog',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TelaInicial(),
    );
  }
}

// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
  TelaInicial({Key key}) : super(key: key);
  @override
  _TelaInicialState createState() => _TelaInicialState();
}

class _TelaInicialState extends State<TelaInicial> {
  // este método permite mostrar uma caixa de alerta AlertDialog
  Future<void> _mostrarCaixaAlerta() async {
    return showDialog<void>(context: context,
      barrierDismissible: false, builder: (BuildContext context) {
        return new AlertDialog(
          title: new Text("Título do Aviso"),
          content: new SingleChildScrollView(
            child: new ListBody(
              children: [
                new Text("E aqui vai o texto.\n\nMais uma linha"),
              ],
            ),
          ),
          actions: [
            new FlatButton(
              child: new Text('OK'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    final btn = ElevatedButton(
      onPressed: _mostrarCaixaAlerta,
      child: Text('Mostrar Aviso de Alerta'),
    );

    return Scaffold(
      appBar: AppBar(
        title: Text("Caixa de alerta AlertDialog"),
      ),
      body: Center(
        child: Container(
          child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              children: <Widget>[
                // o botão vai aqui
                btn,
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Execute a aplicação e clique no botão para ver o resultado.

Link para compartilhar na Internet ou com seus amigos:

Flutter ::: Material Library - Biblioteca Material ::: TextField

Como usar a propriedade onChanged da classe TextField do Flutter para detectar mudança em seu conteúdo e exibí-lo como título da janela

Quantidade de visualizações: 1711 vezes
A propriedade onChanged da classe TextField nos permite detectar quando o conteúdo da caixa de texto sofre alterações (quando o usuário digita mais conteúdo ou deleta o conteúdo já existente.

Nesta dica eu mostro como tirar proveito dessa propriedade para atualizar o título da AppBar com o mesmo texto da caixa de texto à medida que o usuário digita.

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import 'package:flutter/material.dart';

// método principal do Dart, que inicia a aplicação
void main() {
  runApp(MeuApp());
}

class MeuApp extends StatelessWidget {
  // Este  widget é a raiz da aplicação Flutter
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Controle TextField',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TelaInicial(),
    );
  }
}

// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
  TelaInicial({Key key}) : super(key: key);
  @override
  _TelaInicialState createState() => _TelaInicialState();
}

class _TelaInicialState extends State<TelaInicial> {
  String tituloJanela = "Título da Janela";

  @override
  Widget build(BuildContext context) {
    // vamos criar uma caixa de texto chamada nomeTxt
    final nomeTxt = TextField(
      decoration: InputDecoration(
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(10.0)),
        hintText: 'Digite seu nome'
      ),
      // Vamos detectar a mudança de conteúdo do TextField
      onChanged: (String value) async {
        // setState() força a atualização da janela
        setState(() {
          tituloJanela = value;
        });
      }
    );

    return Scaffold(
      appBar: AppBar(
        title: Text(tituloJanela),
      ),
      body: Center(
        child: Container(
          child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              children: <Widget>[
                // a caixa de texto TextField vai aqui
                nomeTxt,
              ],
            ),
          ),
        ),
      ),
    );
  }
}



Flutter ::: Material Library - Biblioteca Material ::: TextField

Como habilitar ou desabilitar um botão ao digitar em um widget TextField do Flutter

Quantidade de visualizações: 3637 vezes
Nesta dica eu mostro como podemos habilitar ou desabilitar um botão ElevatedButton dependendo do conteúdo de um TextField. Para isso nós vamos usar a propriedade onChanged da classe TextField para desabilitar o botão quando a caixa de texto estiver vazia e habilitá-lo em caso contrário.

O truque aqui é passar um valor null para a propriedade onPressed do ElevatedButton. Só isso já basta para que o botão fique desabilitado. Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import 'package:flutter/material.dart';

// método principal do Dart, que inicia a aplicação
void main() {
  runApp(MeuApp());
}

class MeuApp extends StatelessWidget {
  // Este  widget é a raiz da aplicação Flutter
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Controle TextField',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TelaInicial(),
    );
  }
}

// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
  TelaInicial({Key key}) : super(key: key);
  @override
  _TelaInicialState createState() => _TelaInicialState();
}

class _TelaInicialState extends State<TelaInicial> {
  bool btnDesabilitado = true; // vamos desabilitar o botão

  @override
  Widget build(BuildContext context) {
    // vamos criar uma caixa de texto chamada nomeTxt
    final nomeTxt = TextField(
      decoration: InputDecoration(
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(10.0)),
        hintText: 'Digite seu nome'
      ),
      // Vamos detectar a mudança de conteúdo do TextField
      onChanged: (String value) async {
        // setState() força a atualização da janela
        if(value.isEmpty) { // o campo de texto não está vazio
          setState(() {
            btnDesabilitado = true; // desabilita o botão
          });
        }
        else{
          setState(() {
            btnDesabilitado = false; // habilita o botão
          });
        }
      }
    );

    final btnNome = ElevatedButton(
      onPressed: btnDesabilitado ? null : (){},
      child: Text('Clique Aqui'),
    );

    return Scaffold(
      appBar: AppBar(
        title: Text("O Widget TextField"),
      ),
      body: Center(
        child: Container(
          child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              children: <Widget>[
                // a caixa de texto TextField vai aqui
                nomeTxt,
                // o botão vai aqui
                btnNome,
              ],
            ),
          ),
        ),
      ),
    );
  }
}



Flutter ::: Material Library - Biblioteca Material ::: TextField

Como clicar em um botão, obter o texto digitado em um TextField do Flutter e exibí-lo em uma AlertDialog

Quantidade de visualizações: 2662 vezes
Nesta dica mostrarei como clicar em um botão, obter o texto que o usuário digitou em um TextField e exibí-lo em uma caixa de mensagem AlertDialog. Para isso vamos tirar proveito da classe TextEditingController, que nos fornece um controller que pode ser associado a uma caixa de texto.

Quando o usuário clicar no botão, nós chamamos o método setState() para atualizar uma variável com o texto do controller e em seguida exibimos uma mensagem AlertDialog com o texto digitado. Veja o exemplo completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import 'package:flutter/material.dart';

// método principal do Dart, que inicia a aplicação
void main() {
  runApp(MeuApp());
}

class MeuApp extends StatelessWidget {
  // Este  widget é a raiz da aplicação Flutter
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Controle TextField',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TelaInicial(),
    );
  }
}

// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
  TelaInicial({Key key}) : super(key: key);

  @override
  _TelaInicialState createState() => _TelaInicialState();
}

class _TelaInicialState extends State<TelaInicial> {
  String nomeUsuario; // vai guarda o nome digitado no TextField
  // controler para o TextField
  TextEditingController nomeController = TextEditingController();

  // método que nos permite obter o conteúdo digitado no TextField
  void obterTexto() {
    setState(() {
      // transferimos para a variável nomeUsuario o conteúdo
      // do texto do controller do TextField
      nomeUsuario = nomeController.text;
    });

    // agora vamos mostrar o texto digitado em uma mensagem
    // AlertDialog
    showDialog<void>(context: context,
      barrierDismissible: false, builder: (BuildContext context) {
        return new AlertDialog(
          title: new Text("Texto Digitado"),
          content: new SingleChildScrollView(
            child: new ListBody(
              children: [
                new Text("O texto digitado foi: $nomeUsuario"),
              ],
            ),
          ),
          actions: [
            new FlatButton(
              child: new Text('OK'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    // vamos criar uma caixa de texto chamada nomeTxt
    final nomeTxt = TextField(
      controller: nomeController,
      decoration: InputDecoration(
          border: OutlineInputBorder(
              borderRadius: BorderRadius.circular(10.0)),
          hintText: 'Digite seu nome'
      ),
    );

    final btnNome = ElevatedButton(
      onPressed: obterTexto,
      child: Text('Clique Aqui'),
    );

    return Scaffold(
      appBar: AppBar(
        title: Text("O Widget TextField"),
      ),
      body: Center(
        child: Container(
          child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              children: <Widget>[
                // a caixa de texto TextField vai aqui
                nomeTxt,
                // o botão vai aqui
                btnNome,
              ],
            ),
          ),
        ),
      ),
    );
  }
}



Veja mais Dicas e truques de Flutter

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 48 usuários muito felizes estudando em nosso site.