openDatabaseOnDowngradeDelete method
Future<SdbDatabase>
openDatabaseOnDowngradeDelete(
- String name, {
- int? version,
- SdbOnVersionChangeCallback? onVersionChange,
Open a database.
Implementation
Future<SdbDatabase> openDatabaseOnDowngradeDelete(
String name, {
int? version,
SdbOnVersionChangeCallback? onVersionChange,
}) async {
Future<SdbDatabase> doOpen() {
return openDatabase(
name,
version: version,
onVersionChange: onVersionChange,
);
}
if (version == null) {
return doOpen();
}
try {
return await doOpen();
} catch (e) {
// ignore: avoid_print
print('openOnDowngradeDelete: error ${e.runtimeType} $e');
/// There is no good way to detect a downgrade, try to open without version to check the version
var db = await openDatabase(name);
var isDowngrade = version < db.version;
await db.close();
if (isDowngrade) {
await deleteDatabase(name);
} else {
rethrow;
}
return await doOpen();
}
}