У меня есть рабочий код, с которым я сейчас имею дело. На 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;
}