openDatabase method
Implementation
Future<IDBDatabase?> openDatabase(
String name, {
int? version,
void Function(Event event)? onUpgradeNeeded,
void Function(Event event)? onBlocked,
}) async {
if ((version == null) != (onUpgradeNeeded == null)) {
return Future.error(ArgumentError(
'version and onUpgradeNeeded must be specified together'));
}
try {
IDBOpenDBRequest? request;
if (version != null) {
request = open(name, version);
} else {
request = open(name);
}
if (onUpgradeNeeded != null) {
request.onupgradeneeded = onUpgradeNeeded.toJS;
}
if (onBlocked != null) {
request.onblocked = onBlocked.toJS;
}
final completer = Completer<void>();
request.onerror = ((Event _) => completer
.completeError(request?.error?.message ?? 'Unknown Error!')).toJS;
request.onsuccess = ((Event _) => completer.complete()).toJS;
await completer.future;
return request.result as IDBDatabase?;
} catch (e, stacktrace) {
return Future.error(e, stacktrace);
}
}