1
resposta

Erro na criação de String

Olá amigos, Segui o passo a passo da aula e estava tudo indo bem, até o momento de rodar o código do "debugPrint('$transferenciaCriada')".

Neste momento o console apresentou o seguinte erro e não consigo rodar meu código:

Compiler message: lib/main.dart:116:10: Error: The method 'Transferencia.toString' has fewer named arguments than those of overridden method 'DiagnosticableMixin.toString'. String toString() { ^ ../flutter/packages/flutter/lib/src/foundation/diagnostics.dart:3092:10: Context: This is the overridden method ('toString'). String toString({ DiagnosticLevel minLevel = DiagnosticLevel.debug }) { ^

Alguém sabe como resolver? O erro está na conversão para String, ja mudei varias coisas, mas até agora nada funcionou. Obrigado!

import 'package:flutter/material.dart';

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

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

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>[
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: TextField(
              controller: _controladorCampoNumeroConta,
              style: TextStyle(fontSize: 24.0),
              decoration: InputDecoration(
                labelText: 'Número da Conta',
                hintText: '0000',
              ),
              keyboardType: TextInputType.number,
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: TextField(
              controller: _controladorCampoValor,
              style: TextStyle(fontSize: 24.0),
              decoration: InputDecoration(
                icon: Icon(Icons.monetization_on),
                labelText: 'Valor',
                hintText: '0.00',
              ),
              keyboardType: TextInputType.number,
            ),
          ),
          RaisedButton(
            child: Text('Confirmar'),
            onPressed: () {
              debugPrint('clicou no botão');
              final int numeroConta =
                  int.tryParse(_controladorCampoNumeroConta.text);
              final double valor = double.tryParse(_controladorCampoValor.text);
              if (numeroConta != null && valor != null) {
                // verificação
                final transferenciaCriada = Transferencia(valor, numeroConta);
                debugPrint('$transferenciaCriada');
              }
            },
          ),
        ],
      ),
    );
  }
}

class ListaTransf extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: <Widget>[
          ItemTransf(Transferencia(100, 1000)),
          ItemTransf(Transferencia(200, 2002)),
          ItemTransf(Transferencia(300, 3001)),
        ],
      ),
      floatingActionButton: FloatingActionButton(child: Icon(Icons.add)),
      appBar: AppBar(
        title: Text('Transferências'),
      ),
    );
  }
}

class ItemTransf extends StatelessWidget {
  final Transferencia _transf;
  const ItemTransf(this._transf);

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

class Transferencia extends StatelessWidget {
  final double valor;
  final int numeroConta;

  Transferencia(this.valor, this.numeroConta);


  @override
  String toString() {
    return 'Transferencia{valor: $valor, numeroConta: $numeroConta}';
  }

  @override
  Widget build(BuildContext context) {
    return null;
  }
}
1 resposta

Oi Gabriel, tudo bem?

Você indicou que a classe Transferencia é um Widget, por isso está tendo problemas com o toString(), apenas remova essa herança que o app deve funcionar sem problemas.

[]s

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