quando crio uma nova transferencia, a mesma não aparece no meu StatefullWidget. segue abaixo meu codigo:
import 'dart:ffi';
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 _numeroContaController = TextEditingController();
final TextEditingController _valorController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Criando Transferencia")),
body: Column(children: [
Editor(
controller: _numeroContaController,
dica: 'Numero da conta',
rotulo: '0000'),
Editor(
controller: _valorController,
rotulo: "valor transferencia",
dica: '00,00',
icone: Icons.monetization_on),
ElevatedButton(
onPressed: () => _criaTransferencia(context),
child: Text('Confirmar'),
),
]),
);
}
void _criaTransferencia(BuildContext context) {
final int numeroConta = int.parse(_numeroContaController.text);
final double valor = double.parse(_valorController.text);
if (numeroConta != null && valor != null) {
Transferencia transferenciaCriada = Transferencia(valor, numeroConta);
Navigator.pop(context, transferenciaCriada);
}
}
}
class Editor extends StatelessWidget {
final TextEditingController controller;
final String rotulo;
final String dica;
final IconData? icone;
Editor({required this.controller,
required this.rotulo,
required this.dica,
this.icone});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: TextField(
controller: controller,
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<Transferencia> _transferencias = [];
@override
State<StatefulWidget> createState() {
return ListaTransferenciaState();
}
}
class ListaTransferenciaState extends State<ListaTransferencias> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("transferencias"),
),
body: ListView.builder(
itemCount: widget._transferencias.length,
itemBuilder: (context, indice) {
final transferencia = widget._transferencias[indice];
return ItemTransferencia(transferencia);
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return FormularioTransferencia();
})).then((transferenciaRecebida) {
debugPrint(transferenciaRecebida.toString());
widget._transferencias.add(transferenciaRecebida);
debugPrint(widget._transferencias.toString());
});
},
child: Icon(Icons.add),
),
);
}
}
class ItemTransferencia extends StatelessWidget {
final Transferencia transferencia;
ItemTransferencia(this.transferencia);
@override
Widget build(BuildContext context) {
return Card(
child: transferencia,
);
}
}
class Transferencia extends StatelessWidget {
final double valor;
final int numeroConta;
Transferencia(this.valor, this.numeroConta);
@override
Widget build(BuildContext context) {
return ListTile(
leading: Icon(Icons.monetization_on),
title: Text(valor.toString()),
subtitle: Text(numeroConta.toString()),
);
}
@override
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
// TODO: implement toString
return ('valor: $valor conta: $numeroConta');
}
}