1
resposta

Estou pegando esse erro quando dou create no contato

Por favor poderia avaliar o que possa ser? Apresenta esse erro quando dou create no contato.

E/flutter ( 5541): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: type 'Contact' is not a subtype of type 'String?' E/flutter ( 5541): #0 ContactsList.build.. (package:bytebank/src/screens/contacts_list.dart:32:45) E/flutter ( 5541): #1 _rootRunUnary (dart:async/zone.dart:1436:47) E/flutter ( 5541): #2 _CustomZone.runUnary (dart:async/zone.dart:1335:19) E/flutter ( 5541): E/flutter ( 5541):

import 'package:flutter/material.dart';
import '../themes/colors.dart';
import 'contact_form.dart';

class ContactsList extends StatelessWidget {
  const ContactsList({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: ThemeColors.primaryColor,
        title: const Text('Contacts'),
      ),
      body: ListView(
        children: const <Widget>[
          Card(
            child: ListTile(
              title: Text('Bruno', style: TextStyle(fontSize: 18.0),),
              subtitle: Text('1000', style: TextStyle(fontSize: 16.0),),
            ),
          )
        ],
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) => const ContactForm(),
            ),
          ).then((newContact) => debugPrint(newContact),
          );
        },
        child: const Icon(Icons.add),
        backgroundColor: Colors.green,
      ),
      bottomNavigationBar: BottomAppBar(
          shape: const CircularNotchedRectangle(),
          color: ThemeColors.primaryColor,
          child: Container(height: 50)),
    );
  }
 }
1 resposta

Olá Antonio.

A função debugPrint pode recebe como parâmetro apenas uma String ou nulo (String?), você esta botando um objeto de Contact.

Tem duas soluções para resolver o problema:

  • Use o método toString() do newContact

      Navigator.of(context).push(
          MaterialPageRoute(
              builder: (context) => const ContactForm(),
          ),
      ).then(
          // Use string para o parâmetro na função debugPrint
          (newContact) => debugPrint(newContact.toString()),
      );
  • Use a função print no lugar do debugPrint (diferente do debugPrint, o print recebe um Object como parâmetro, é como se fosse um tipo genérico.)

      Navigator.of(context).push(
          MaterialPageRoute(
              builder: (context) => const ContactForm(),
          ),
      ).then(
          // Use a função print
          (newContact) => print(newContact),
      );

Essas são os códigos que representa o debugPrint e o print.

debugPrint

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

print

Insira aqui a descrição dessa imagem para ajudar na acessibilidade