1
resposta

Erro ao Depurar

Olá, estou tendo erro de ao tentar rodar o app, uso o vs code e rodo com o proprio windows, segue erro e código:

o erro se passa no throw:
@optionalTypeArgs
  Future<T?> _invokeMethod<T>(String method, { required bool missingOk, dynamic arguments }) async {
    assert(method != null);
    final ByteData? result = await binaryMessenger.send(
      name,
      codec.encodeMethodCall(MethodCall(method, arguments)),
    );
    if (result == null) {
      if (missingOk) {
        return null;
      }
      throw MissingPluginException('No implementation found for method $method on channel $name');
    }
    return codec.decodeEnvelope(result) as T?;
  }

meu codigo app_database:

import 'package:bytebank/models/contact.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

Future<Database> createDatabase() {
  return getDatabasesPath().then((dbPath) {
    final String path = join(dbPath, 'bytebank.db');
    return openDatabase(path, onCreate: (db, version) {
      db.execute('CREATE TABLE contacts('
          'id INTEGER PRIMERY KEY,'
          'name TEXT, '
          'account_number INTEGER)');
    }, version: 2);
  });
}

Future<int> save(Contact contact) {
  return createDatabase().then((db) {
    // ignore: prefer_collection_literals
    final Map<String, dynamic> contactMap = Map();
    contactMap['name'] = contact.name;
    contactMap['account_number'] = contact.accountNumber;
    contactMap['id'] = contact.id;
    return db.insert('contacts', contactMap);
  });
}

Future<List<Contact>> findAll() {
  return createDatabase().then((db) {
    return db.query('contacts').then((maps) {
      final List<Contact> contacts = [];
      for (Map<String, dynamic> map in maps) {
        final Contact contact = Contact(
          map['name'],
          map['account_number'],
          map['id'],
        );
        contacts.add(contact);
      }
      return contacts;
    });
  });
}
1 resposta

Fiz da seguinte forma e resolveu para mim.

Troque o:

Future<List<Contatos>> retornaTodosContatos() {

por

Future<List<Contatos>?> retornaTodosContatos() {

Com a atualização do Flutter e as propriedades do null-safety estou encontrando bastante dificuldade nas aulas da Alura.