Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

está aparecendo uma mensagem como se fosse para criar a classe do itemTransferencia e da Transferencia mas como pode ver no código está criada

import 'package:flutter/material.dart';

void main () => runApp(BytebankApp());

class BytebankApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: ListaTransferencias(),
      ),
    );
  }
}

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'),
      ),
      body: Column(
        children: <Widget>[
          Editor (controlador: _controladorCampoNumeroConta,
          dica: '0000',
          rotulo: 'Número da conta',
          ),
          Editor (controlador: _controladorCampoValor,
          dica: '0.00',
          rotulo: 'Valor',
          icone: Icons.monetization_on,
          ),
          RaisedButton(
            child: Text('Confirmar'),
            onPressed: () {
              _criaTransferencia(context);
            },
          ),
        ]
      ),
    );
  }

  void _criaTransferencia(BuildContext context) {
    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('Criando Transferência');
      debugPrint('$transferenciaCriada');
      Navigator.pop(context, transferenciaCriada);
    }
  }
}

class Editor extends StatelessWidget {

  final TextEditingController controlador;
  final String rotulo;
  final String dica;
  final IconData icone;

  Editor({this.controlador, this.rotulo, this.dica, this.icone});

  @override
  Widget build(BuildContext context) {
    return Padding(
            padding: const EdgeInsets.all(16.0),
            child: TextField(
              controller: controlador,
              style: TextStyle(
              fontSize: 32.0
            ), // TextStyle
            decoration: InputDecoration(
              icon: icone != null ? Icon(icone) : null,
              labelText: rotulo,
              hintText: dica,
            ),
              keyboardType: TextInputType.number,
            ),
          );
  }

}

class ListaTransferencias extends StatefulWidget {

  final List<Transferencia> _transferencias = List();

  //Criando o Override do stateful
  @override
  State<StatefulWidget> createState() {
    return ListaTransferenciasState();
  }
}

 class ListaTransferenciasState extends State<ListaTransferencias> {

    @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title: Text('Transferências'),
          ),
      body: ListView.builder(
        itemCount: widget._transferencias.length,
        itemBuilder: (context, indice) {
          final transferencia = widget._transferencias[indice];
          return ItemTransferencia(transferencia);
        },
      ),
      floatingActionButton: FloatingActionButton(
            child: Icon(Icons.add), onPressed: () {
              final Future<Transferencia> future =  Navigator.push(context, MaterialPageRoute(builder: (context) {
                return FormularioTransferencia();
              }));
              future.then((transferenciaRecebida) {
                debugPrint('Chegou no then do Future');
                debugPrint('$transferenciaRecebida');
                widget._transferencias.add(transferenciaRecebida);
                setState(() {});
              });
            },
          ),
    );
  }


class ItemTransferencia extends StatelessWidget{

  final Transferencia _transferencia;

  ItemTransferencia(this._transferencia);

  @override
  Widget build(BuildContext context) {
    return Card(
      child: ListTile(
        leading: Icon(Icons.monetization_on),
        title: Text(_transferencia.valor.toString()),
        subtitle: Text(_transferencia.numeroConta.toString()),
      ),
    );
  }
}

class Transferencia {

  final double valor;
  final int numeroConta;

  Transferencia(this.valor, this.numeroConta);

  @override
  String toString () {
    return 'Transferencia{valor: $valor, numeroConta: $numeroConta}';
  }
}
1 resposta
solução!

Oi Daniel, tudo bem? Faltou fechar uma chave no final do método ListaTransferenciasState.

O encerramento do seu método está assim:

   ),
    ); // Scaffold
  }

O correto é:

     ),
    ); // Scaffold
  }
}

Só isso resolve :).

Esse tipo de erro gera a maior raiva, o log que o flutter nos dá não diz nada com nada kkkkk. Passei recentemente por esse mesmo erro, logo fiquei atento ao fechamento dos métodos.

Abração e bom estudo!

Aaah, caso tenha resolvido o seu problema, poderia por favor marcar esta resposta como solução para nos ajudar a organizar o fórum?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software