Implementation
Future<Database> open(
String name, {
int? version,
void Function(VersionChangeEvent event)? onUpgradeNeeded,
void Function(Event event)? onBlocked,
}) {
if ((version == null) != (onUpgradeNeeded == null)) {
return new Future.error(
new ArgumentError(
'version and onUpgradeNeeded must be specified together',
),
);
}
try {
OpenDBRequest request;
if (version != null) {
request = _open(name, version);
} else {
request = _open(name);
}
if (onUpgradeNeeded != null) {
request.onUpgradeNeeded.listen(onUpgradeNeeded);
}
if (onBlocked != null) {
request.onBlocked.listen(onBlocked);
}
return _completeRequest(request);
} catch (e, stacktrace) {
return new Future.error(e, stacktrace);
}
}