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

ElevatedButton

O código fica pedindo um identificador, porém não sei o que fazer para rodar o código com o botão. "final int numeroConta = int.tryParse(_controladorCampoNumeroConta); //Expected an indentifier" Parecer ser algum tipo de erro no "final".

ElevatedButton(
              onPressed: null,
              child: Text('Confirm'),
                final int numeroConta = int.tryParse(_controladorCampoNumeroConta); //Expected an indentifier
                final double valor = double.tryParse(_controladorCampoValor); 
                if (numeroConta != null && valor != null) {
                  final transferenciaCriada = Transferencia(valor, numeroConta);
                  debugPrint('$transferenciaCriada');
              },
            ),

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá Andrey, tudo bem?

Isso acontece pois você está tentando passar o final int?... como atributo do ElevatedButton, esse código que você enviou precisaria estar dentro das chaves do onPressed, pois a sua intenção seria justamente executar esse trecho de código ao pressionar o botão, como no código abaixo:

ElevatedButton(
              onPressed: ( ) {
                    final int numeroConta = int.tryParse(_controladorCampoNumeroConta); //Expected an indentifier
                    final double valor = double.tryParse(_controladorCampoValor); 
                    if (numeroConta != null && valor != null) {
                        final transferenciaCriada = Transferencia(valor, numeroConta);
                        debugPrint('$transferenciaCriada');
                     },
              },
              child: Text('Confirm'),
            ),

Realizando essa alteração eu acredito que ele funcione da maneira esperada. Qualquer dúvida estareia à disposição.

Grande abraço e bons estudos!!

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

Opa, eai Matheus! Eu já tinha tentado dessa forma, e mesmo assim ele continua dando outro erro <0>.

Vou repassar o código todo, mas não sei aonde estou errando :S

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá de novo Andrey, obrigado por compartilhar o código completo, isso ajuda demaais, vou pedir para você testar duas alterações no seu código

Invalid constant value. (Valor constante inválido)

o Flutter está apontando esse erro pois o children declarado na linha 34 do seu código é constante e dentro do ElevatedButton você está usando variáveis que podem ser alteradas, logo não se torna mais constante.

Solução: remover o const da linha 34.

Too many positional arguments: 0 expected, but 1 found. Try removing the extra positional arguments, or specifying the name for named arguments.

Esse aqui está dizendo que você está coolocando um argumento a mais no onPressed da linha 56, ou seja retire a vírgula que está após os parênteses ficaria algo assim na linha 56:

onPressed: () {
.
.
.
}

pois a função anônima é um argumento único para um atributo como o onPressed.

Com essas alterações eu acredito que seu código já funcione normalmente, espero ter ajudado, qualquer coisa é só avisar aqui que tentamos resolver.

solução!
class FormularioTransferencia extends StatelessWidget {

  final TextEditingController _controladorCampoNumeroConta = TextEditingController();
  final TextEditingController _controladorCampoValor = TextEditingController();

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
            leading: const Icon(Icons.arrow_back),
            title: const Text('Criando transferência')
        ),
        body: Column(
          children: [
            Padding(
              padding: const EdgeInsets.all(16.0),
              child: TextField(
                controller: _controladorCampoNumeroConta,
                style: const TextStyle(fontSize: 16.0),
                decoration: const InputDecoration(
                    labelText: 'Número da Conta', hintText: '0000'),
                keyboardType: TextInputType.number,
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(16.0),
              child: TextField(
                controller: _controladorCampoValor,
                style: const TextStyle(fontSize: 16.0),
                decoration: const InputDecoration(
                    icon: Icon(Icons.monetization_on),
                    labelText: 'Valor',
                    hintText: '0000'),
                keyboardType: TextInputType.number,
              ),
            ),
            ElevatedButton(
              onPressed: ( ) {
                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');
                }
              },
              child:  const Text('Confirm'),
            ),
          ],
        )
      );
  }
}

Cara, valeu de mais a ajuda!!!

Tive que realizar mais algumas correções, mas a tua ajuda me deu o caminho pra ajustar o código.

Na questão do const no children eu tirei e adicionei direto nas variáveis dentro do próprio children.

Já no onPressed eu ajustei a questão da ',' porém tive que ajustar o int para int? e adicionar o .text no final dos controladores.

E deu tudo certo com o maldito (hehe) botão.

Te agradeço de mais Matheus!!! Tamo junto!!!