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

The following ListaTransferenciasState object was thrown building _BodyBuilder:

import 'dart:html';
//import 'dart:ui' as ui;

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: [
            Editor(_controladorCampoNumeroConta, 'Número da Conta', '000'),
            Editor(
                _controladorCampoValor, 'Valor', '0.00', Icons.monetization_on),
            ElevatedButton(
              onPressed: () => _criarTransferencia(context),
              child: Text('Transferir'),
            ),
          ],
        ));
  }

  void _criarTransferencia(BuildContext context) {
    final int numeroConta = int.parse(_controladorCampoNumeroConta.text);
    final double valor = double.parse(_controladorCampoValor.text);

    if (numeroConta != null && valor != null) {
      final transferenciaCriada = Transferencia(valor, numeroConta);
      Navigator.pop(context, transferenciaCriada);
      //debugPrint('$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<Transferencia> _transferencias = [];

  @override
  State<StatefulWidget> createState() {
    throw ListaTransferenciasState();
  }
}

class ListaTransferenciasState extends State<ListaTransferencias> {

  @override
  Widget build(BuildContext context) {
    widget._transferencias.add(Transferencia(150.00, 12345));
    return Scaffold(
      appBar: AppBar(
        title: Text('Tranferências'),
      ),
      body: ListView.builder(
        itemCount: widget._transferencias.length,
        itemBuilder: (context, indice){
          final transferencias = widget._transferencias[indice];
          return ItemTransferencia(transferencias);
        },
      ),
      floatingActionButton: FloatingActionButton(
        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!);
          });
        },
        child: Icon(Icons.add),
      ),
    );
  }
}

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}';
  }
}
2 respostas

O código acima é referente ao curso ** flutter fundamentos**;

Estou usando AndroidStudio;

Flutter 2.2.3

Tools • Dart 2.13.4

Sei que a vesão do Flutter é direrente do curso, mas consegui ir adaptando o código para nova versão até o último módulo do curso;

Ele fala que o problema está no Scaffold();

  ListaTransferenciasState#3d709(lifecycle state: created, no widget, not mounted)

The relevant error-causing widget was: 
  Scaffold file:///C:/Users/adriano/AndroidStudioProjects/flutter_app/lib/main.dart:12:13
When the exception was thrown, this was the stack: 
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49  throw_
packages/flutter_app/main.dart 89:3                                                                                        createState
packages/flutter/src/widgets/framework.dart 4663:23                                                                        new
packages/flutter/src/widgets/framework.dart 737:38                                                                         createElement
packages/flutter/src/widgets/framework.dart 3606:39     

Alguém pode me ajudar, por favor?

solução!

Resolvido!

Fiz downgrade da versão do flutter para 1.7, a mesma do curso!