1
resposta

Não consigo salvar um novo contato

O app mostra esse erro ao tentar salvar um novo contato. Unhandled Exception: DatabaseException(UNIQUE constraint failed: contacts.id (code 1555 SQLITE_CONSTRAINT_PRIMARYKEY)) sql 'INSERT INTO contacts (id, name, account_number) VALUES (?, ?, ?)' args [0, iyhb, 588]}

  _criaContato(BuildContext context) {
    final String fullName = _controllerCampoNome.text;
    final int accountNumber = int.tryParse(_controllerCampoConta.text);
    if (fullName != null && accountNumber != null) {
      final Contact newContact = Contact(0, fullName, accountNumber);
      save(newContact).then( (id) => Navigator.pop(context) );
    }
  }

Acredito que o erro acontece porque os novos contatos são salvos com o mesmo ID, neste caso ZERO.

Alguma sugestão de como pegar o Id dinamicamente?

1 resposta

Boa tarde Fabrício, verifique no seu método "save()" no arquivo "app_database.dart" está desta forma.

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

Não declare o id como um contactMap, veja se resolve.