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

Os valores salvos no formulário(valores da transferência) não aparecem na lista (lista de transferências)

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 scaffkey = GlobalKey(); final TextEditingController controladorCampoNumeroConta = TextEditingController(); final TextEditingController _controladorCampoValor = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( key: scaffkey, appBar: AppBar( title: Text('Criando Transferência'), ), body: Column( children: [ Editor( controlador: _controladorCampoNumeroConta, rotulo: 'Número da Conta', dica: '000', ), Editor( controlador: _controladorCampoValor, rotulo: 'Valor', dica: '0.00', icone: Icons.monetizationon, ), RaisedButton( child: Text('Confirmar'), onPressed: () => _criaTransferencia(context)), ], ), ); }

void _criaTransferencia(BuildContext context) { debugPrint('Clicou no botão');

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('Transferencia criada');
  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: 24.0), decoration: InputDecoration( icon: icone != null ? Icon(icone) : null, labelText: rotulo, hintText: dica, ), keyboardType: TextInputType.number, ), ); } }

class ListaTransferencias extends StatefulWidget { final List _transferencias = List(); @override State createState() { return ListaTransferenciaState(); } }

class ListaTransferenciaState extends State { @override Widget build(BuildContext context) { widget.transferencias.add(Transferencia(100.0, 222)); 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 future = Navigator.push( context, MaterialPageRoute(builder: (context) { return FormularioTransferencia(); }), ); future.then((transferenciaRecebida) { debugPrint('Chegou no then do future'); debugPrint('$transferenciaRecebida'); widget.transferencias.add(transferenciaRecebida); }); }, ), ); } }

class ItemTransferencia extends StatelessWidget { final Transferencia _transferencia;

ItemTransferencia(this.transferencia); @override Widget build(Object context) { return Card( child: ListTile( leading: Icon(Icons.monetizationon), title: Text(transferencia.valor.toString()), subtitle: Text(transferencia.conta.toString()), )); } }

class Transferencia { final double valor; final int conta; Transferencia(this.valor, this.conta); @override String toString() { return 'Transferencia{valor: $valor,conta: $conta}'; } }

3 respostas
solução!

comigo está acontecendo igual e já revi o código inteiro e não achei o problema, chega no then e tudo certinho

Conseguiu, resolver?

Também estou nesta situação.

Solução: setState( () {});

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