1
resposta

Valores da transferência não apresentados no console

Pesquisei no fórum e encontrei este tópico https://cursos.alura.com.br/forum/topico-valores-de-transferencias-nao-sao-exibidos-181911 já encerrado. Fiz as mudanças sugeridas na resolução mais não funcionou.

Tanto executando a aplicação via Chrome ou pelo emulador do Android os valores preenchidos nos campos número conta e valor não são exibidos no console.

Debug via AndroidDebug via Chrome

Código da classe formulário de transferencia

class FormularioTransferencia extends StatelessWidget {
  final TextEditingController _controladorCampoNumeroConta = TextEditingController();
  final TextEditingController _controladorCampoValor = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Criando Tranferência'),
        ),
        body: Column(children: <Widget>[
          Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0,
              ),
              decoration: InputDecoration(
                  labelText: 'Número da conta', hintText: '0000'),
              keyboardType: TextInputType.number,
            ),
          ),
          Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0,
              ),
              decoration: InputDecoration(
                  icon: Icon(Icons.monetization_on),
                  labelText: 'Valor',
                  hintText: '0.00'),
              keyboardType: TextInputType.number,
            ),
          ),
          ElevatedButton(
              child: Text('Confirmar'),
              onPressed: () {
                debugPrint('clicou no confirmar');
                final int? numeroConta = int.tryParse(_controladorCampoNumeroConta.text);
                final double? valor = double.tryParse(_controladorCampoValor.text);
                if (numeroConta != null && valor != null) {
                  final transferenciaCriada = Transferencia(valor, numeroConta);
                  debugPrint('$transferenciaCriada');
                }
              })
        ]));
  }
}

O que posso fazer para corrigir este erro?

1 resposta

Olá Marcos, tudo bem?

Pelo código que você enviou, notei que você está utilizando os controladores _controladorCampoNumeroConta e _controladorCampoValor para obter os valores dos campos de número da conta e valor, respectivamente. No entanto, você não está utilizando esses controladores nos campos de texto.

Para corrigir o problema, basta adicionar os controladores nos campos de texto. No primeiro campo, adicione o controlador _controladorCampoNumeroConta à propriedade controller do TextField. No segundo campo, adicione o controlador _controladorCampoValor à propriedade controller do TextField.

Segue um exemplo de como ficaria o código:

class FormularioTransferencia extends StatelessWidget {
  final TextEditingController _controladorCampoNumeroConta = TextEditingController();
  final TextEditingController _controladorCampoValor = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Criando Tranferência'),
        ),
        body: Column(children: <Widget>[
          Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0,
              ),
              decoration: InputDecoration(
                  labelText: 'Número da conta', hintText: '0000'),
              keyboardType: TextInputType.number,
              controller: _controladorCampoNumeroConta, // Adicionado o controlador
            ),
          ),
          Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              style: TextStyle(
                fontSize: 24.0,
              ),
              decoration: InputDecoration(
                  icon: Icon(Icons.monetization_on),
                  labelText: 'Valor',
                  hintText: '0.00'),
              keyboardType: TextInputType.number,
              controller: _controladorCampoValor, // Adicionado o controlador
            ),
          ),
          ElevatedButton(
              child: Text('Confirmar'),
              onPressed: () {
                debugPrint('clicou no confirmar');
                final int? numeroConta = int.tryParse(_controladorCampoNumeroConta.text);
                final double? valor = double.tryParse(_controladorCampoValor.text);
                if (numeroConta != null && valor != null) {
                  final transferenciaCriada = Transferencia(valor, numeroConta);
                  debugPrint('$transferenciaCriada');
                }
              })
        ]));
  }
}

Espero ter ajudado e bons estudos!