Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quebrando a cabeça com o método void _criaTransferencia() {}

Gente bom dia, estou tendo um trabalho para que meu método enxergue as varáveis "controladorCampoNumeroConta" e "controladorCampoValor" dentro da class FormulárioTransferencia (). Já tentei alguns passos mas sem sucesso. Segue 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 Transferência'),
        titleTextStyle: TextStyle(fontSize: 24.0),
      ),
      body: Column(
        children: [
          Editor(
            rotulo: 'Número da Conta',
            dica: '0000',
            controlador: _controladorCampoNumeroConta),
          Editor(
            rotulo: 'Valor',
            dica: '0,00',
            controlador: _controladorCampoValor,
            icone: Icons.monetization_on),
          ElevatedButton(
            child: Text('Confirmar'),
            onPressed: () => _criaTransferencia()
          ),
        ],
      ),
    );
  }
}

void _criaTransferencia() {
  final int? numeroConta = int.tryParse(_controladorCampoNumeroConta.text); // o erro está aqui no acesso a var _controladorCampoNumeroConta
  final double? valor = double.tryParse(_controladorCampoValor.text); // e aqui no acesso a var _controladorCampoValor
  if (numeroConta != null && valor != null) {
    final transferenciaCriada = Transferencia(valor, numeroConta);
  }
}
2 respostas
solução!

Oi. void criaTransferencia() é um método da classe *FormularioTransferencia *

Pelo seu código do no post ela está fora das chaves da classe.

Tente assim:

class FormularioTransferencia extends StatelessWidget {
  final TextEditingController _controladorCampoNumeroConta =
      TextEditingController();
  final TextEditingController _controladorCampoValor = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Criando Transferência'),
        titleTextStyle: TextStyle(fontSize: 23.0),
      ),
      body: Column(
        children: [
          Editor(
              rotulo: 'Número da Conta',
              dica: '-0001',
              controlador: _controladorCampoNumeroConta),
          Editor(
              rotulo: 'Valor',
              dica: '-1,00',
              controlador: _controladorCampoValor,
              icone: Icons.monetization_on),
          ElevatedButton(
              child: Text('Confirmar'), onPressed: () => _criaTransferencia()),
        ],
      ),
    );
  }

  void _criaTransferencia() {
    final int? numeroConta = int.tryParse(_controladorCampoNumeroConta
        .text); // o erro está aqui no acesso a var _controladorCampoNumeroConta
    final double? valor = double.tryParse(_controladorCampoValor
        .text); // e aqui no acesso a var _controladorCampoValor
    if (numeroConta != null && valor != null) {
      final transferenciaCriada = Transferencia(valor, numeroConta);
    }
  }
}

Exato amigo, obrigado!