проблема во флаттере с исключением Sqflite - PullRequest
0 голосов
/ 21 января 2019

У меня проблема с моим кодом, я написал простое приложение-флаттер, которое называется f note app, и я включил SQLite в качестве базы данных, я сначала запускаю приложение через эмулятор, и все прошло здорово, но когда я попытался запустить его на моем реальном устройстве (которое является устройством Android), база данных не отвечает (т.е. я не мог добавить новые заметки в базу данных), и когда я вернулся, чтобы запустить свое приложение через эмулятор ... приложение сделало то же самое вещь, которую я нашел в моем реальном устройстве и в консоли, я нашел эту ошибку

Error: Can't use 'SqfliteDatabaseException' because it is declared more than once.

Мне нужна помощь Пожалуйста

1 Ответ

0 голосов
/ 22 января 2019

Я видел ваш код, и проблема в том, что полученное вами исключение, вероятно, связано с этим:

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");

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...