Обновление базы данных флаттера на sqlite - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть рабочий код, с которым я сейчас имею дело. На SQLITE есть база данных. Я изменяю базу данных, но эти изменения не отображаются в приложении. Я понимаю, что дело в том, что код для обновления базы не написан. Как это сделать?

Я привожу пример того, как я пытался это реализовать. Возможно, я действовал в правильном направлении, но теперь я в тупике.

Future < Database > initDB() async {
  var databasesPath = await getDatabasesPath();
  var path = join(databasesPath, "database.sqlite");
  var exists = await databaseExists(path);

  if (!exists) {
    print("Creating new copy from asset");
    try {
      await Directory(dirname(path)).create(recursive: true);
    } catch (_) {}

    ByteData data = await rootBundle.load(join("assets", "database.sqlite"));
    var db = await openDatabase(path, version: 1, onUpgrade: _onUpgrade);
    List < int > bytes =
      data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

    await File(path).writeAsBytes(bytes, flush: true);
  } else {
    print("Opening existing database");
  }
  var db = await openDatabase(path, readOnly: true);
  return db;
}
// UPGRADE DATABASE TABLES
void _onUpgrade(Database db, int oldVersion, int newVersion) {
  if (oldVersion < newVersion) {
    db.execute("What i don't know here?;");
  }
}
Future < Database > get database async {
  if (_database != null) return _database;
  _database = await initDB();
  return _database;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...