Я видел ваш код, и проблема в том, что полученное вами исключение, вероятно, связано с этим:
PlatformException(sqlite_error, UNIQUE constraint failed: Notetable.id
И это потому, что вам нужно управлять уникальностью вашего первичного ключа при вставке новогострока.Вы можете взглянуть на этот SO вопрос для быстрого ознакомления.
Так что просто для того, чтобы ваш код работал быстро, я внес эти изменения (пожалуйста, используйте этот код только для справки, напишителучше):
void createDataBase(Database db,int newVersion) async{
await db.execute('CREATE TABLE IF NOT EXISTS $noteTable ($col_id INTEGER PRIMARY KEY ,'+
'$col_title TEXT , $col_description TEXT , $col_date TEXT,$col_priority INTEGER)');
}
И
Future<int> insertData(myNote note)async{
var mdatabase = await database;
var _newNoteMap = note.convertToMap();
_newNoteMap['id'] = null;
var result = await mdatabase.insert(noteTable, _newNoteMap);
return result;
}
Обратите внимание, что вы всегда вызываете вставку БД, даже когда обновляете существующую заметку.
ОБНОВЛЕНИЕ: добавлены дополнительные модификации (не перечисленные ранее)
в databaseObject.dart
Map<String,dynamic> convertToMap(){
var mapObject = Map<String,dynamic>();
mapObject["id"] = _id;
mapObject["title"] = _title;
mapObject["description"] = _description;
mapObject["date"] = _date;
mapObject["priority"] = _priority;
return mapObject;
}
в Note.dart
if(res >= 1){
showAlertDialog('Status', "New note added successfully and the value of result is $res");
}