Você está aqui: 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 janelaQuantidade de visualizações: 1750 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 para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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 FlutterQuantidade de visualizações: 3660 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 para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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 AlertDialogQuantidade de visualizações: 2696 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 para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- 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, ], ), ), ), ), ); } } |
Vamos testar seus conhecimentos em Python |
Analise o seguinte código Pythonletras = ['ab', 'cd'] for i in range(len(letras)): letras[i].upper() print(letras) Qual é o resultado de sua execução? A) ['AB', 'CD'] B) ['ab', 'cd'] C) ['Ab', 'Cd'] D) ['aB', 'cD'] Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Analise o seguinte código Pythonpalavra = "python" palavra.upper() print(palavra) A) PYTHON B) Um erro de execução na linha 2 C) python D) Python Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Noções de licitação pública A prefeitura de um município do interior do Estado de Santa Catarina precisa realizar uma licitação para a aquisição de bens de informática considerados comuns, como impressoras, cartuchos, laptops, estabilizadores, etc. A modalidade de licitação mais indicada é: A) convite. B) leilão. C) concurso. D) pregão. E) concorrência. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
(IDECAN - 2021 - Perito Criminal de 1ª Classe (PEFOCE)/Engenharia Civil) O aparelho utilizado para medição e registro de precipitações é o A) pluviômetro. B) fluviógrafo. C) pluviógrafo. D) limnímetro. E) limnígrafo. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Serviços preliminares e instalações provisórias Em um canteiro de obras: A) São permitidas a entrada e a permanência de trabalhadores que não sejam compatíveis com a fase da obra. B) É permitida a entrada rápida de trabalhadores que não estejam assegurados. C) São proibidas a entrada e a permanência de quaisquer trabalhadores, independentemente da fase da obra. D) É proibida a entrada de trabalhadores que não estejam assegurados, mas é permitida a permanência de trabalhadores que não sejam compatíveis com a fase da obra. E) São proibidas a entrada e a permanência de trabalhadores que não estejam assegurados e que não sejam compatíveis com a fase da obra. Verificar Resposta Estudar Cards Todas as Questões |
Veja mais Dicas e truques de Flutter |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |