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

Erro ao salvar e buscar contatos com o sqflite.

Olá, bom dia! esta apresentando o seguinte erro no meu código.

E/flutter ( 5231): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: DatabaseException(UNIQUE constraint failed: contacts.id (code 1555 SQLITE_CONSTRAINT_PRIMARYKEY)) sql 'INSERT INTO contacts (id, name) VALUES (?, ?)' args [0, alex]

segue o repositório

https://github.com/lucianogarciagpi/BytebankApp

2 respostas
solução!

Obrigado, consegui resolver, porém não sei explicar ao certo o que houve, sei que tem haver com o null safaty, e com declarações erradas no app_database onde precisei acrescentar o "?" no "id e no account_number" na classe contact:

contact

final int? id;
final int? account_number;

app_database

precisei retirar da função save, a linha abaixo:

contactMap['id'] = contatc.id;

e não tinha atribuido account_number a variável também na função save:

contatctMap['account_number'] = contact.accountNumber;

Oi Luciano, tudo bem?

Desculpa a demora em retornar.

Fico feliz em saber que você conseguiu resolver o erro. Parece que o problema estava relacionado à declaração de nulos (null safety) e às atribuições de valores nas funções do seu código.

No exemplo que você forneceu, percebo que você fez as seguintes alterações para resolver o erro:

  1. Na classe "Contact", você adicionou o operador "?" para tornar os atributos "id" e "account_number" nulos: final int? id; e final int? account_number;.

  2. Na função "save", você removeu a linha que atribuía o valor de "id" ao mapa "contactMap": contactMap['id'] = contact.id;.

  3. Na função "save", você não tinha atribuído o valor de "account_number" ao mapa "contactMap". É importante adicionar essa atribuição para garantir que o valor seja salvo corretamente.

Essas alterações são importantes para lidar com o null safety e evitar erros de tipo durante a execução do código. Ao adicionar o operador "?" na declaração das variáveis, você está permitindo que elas possam ser nulas.

No caso da linha removida que atribuía o valor de "id" ao mapa "contactMap", pode ser que o valor já esteja sendo adicionado em outro lugar do código ou que não seja necessário para a operação que está sendo realizada.

Certifique-se de que todas as atribuições necessárias estejam corretas e de acordo com a estrutura do banco de dados e as necessidades da sua aplicação.

Espero que isso ajude a esclarecer o que estava acontecendo.

Um abraço e bons estudos.