1
resposta

Erro no codigo criarTransferencia

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

  FormularioTransferencia({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Criando Transferência'),
      ),
      body: Column(
        children: [
          Editor(
              controlador: _controladorCampoNumeroConta,
              rotulo: 'Numero da conta',
              dica: '000000-0'),
          Editor(
              controlador: _controladorCampoAgencia,
              rotulo: 'Agencia',
              dica: '00-0'),
          Editor(
              controlador: _controladorCampoValor,
              rotulo: 'Valor',
              dica: '0.00',
              icone: Icons.monetization_on),
          ElevatedButton(
        child: const Text("Confirmar"),
              onPressed: () {
              return criarTransferencia(context);
    }
              )]
              ),

      );
  }
}

void criarTransferencia(BuildContext context) {
  // ignore: prefer_typing_uninitialized_variables
  final int? numeroConta =
  int.tryParse(_controladorCampoNumeroConta.text);
  // ignore: prefer_typing_uninitialized_variables
  final double? valor = double.tryParse(_controladorCampoValor.text);

  if (numeroConta != null && valor != null) {
    final transferencia = Transferencia(valor, numeroConta.toString());
    debugPrint("$transferencia");
    Navigator.pop(context, transferencia);
  }
}

Aqui esta o codigo mas quando criei "void criarTransferencia(BuildContext context)" as variaveis _controladorCampoNumeroConta e _controladorCampoValor não são reconhecidas o que impede a integracao da lista com o formulario. Isso esta me impedindo de continuar, alguem sabe solucionar, a minha versao é a 2.8.1, a mais recente.

1 resposta

Olá, Maria Eugênia! Tudo bem?

Primeiro quero te pedir desculpas pela demora em te dar um retorno.

O problema é bem simples de se solucionar, basta você colocar a função criarTransferencia dentro da classe FormularioTransferencia, assim a função vai conseguir identificar as variáveis _controladorCampoNumeroConta e _controladorCampoValor.

Quando você fizer isso, vai perceber outro erro dentro da função de transferência, na seguinte instrução:

final transferencia = Transferencia(valor, numeroConta.toString());

E nesse caso, apenas retire o toString(), pois a classe Transferência está esperando um valor inteiro (int) nesse campo.

Ao final, sua classe FormularioTransferencia ficará da seguinte forma:

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

  FormularioTransferencia({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Criando Transferência'),
      ),
      body: Column(children: [
        Editor(
            controlador: _controladorCampoNumeroConta,
            rotulo: 'Numero da conta',
            dica: '000000-0'),
        Editor(
            controlador: _controladorCampoAgencia,
            rotulo: 'Agencia',
            dica: '00-0'),
        Editor(
            controlador: _controladorCampoValor,
            rotulo: 'Valor',
            dica: '0.00',
            icone: Icons.monetization_on),
        ElevatedButton(
            child: const Text("Confirmar"),
            onPressed: () {
              return criarTransferencia(context);
            })
      ]),
    );
  }

  void criarTransferencia(BuildContext context) {
    // incluimos a função dentro da classe "FormularioTransferencia"
    final int? numeroConta = int.tryParse(_controladorCampoNumeroConta.text);
    final double? valor = double.tryParse(_controladorCampoValor.text);

    if (numeroConta != null && valor != null) {
      final transferencia =
          Transferencia(valor, numeroConta); // retiramos o "toString()"
      debugPrint("$transferencia");
      Navigator.pop(context, transferencia);
    }
  }
}

Espero que isso tenha te ajudado. Sucesso e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓