@@ -5,33 +5,45 @@ import 'package:sqlite3_web/sqlite3_web.dart';
55import 'package:sqlite_async/sqlite_async.dart' ;
66import 'package:sqlite_async/src/web/database/broadcast_updates.dart' ;
77import 'package:sqlite_async/src/web/web_mutex.dart' ;
8+ import 'package:sqlite_async/web.dart' ;
89
910import 'database.dart' ;
11+ import 'worker/worker_utils.dart' ;
1012
1113Map <String , FutureOr <WebSqlite >> webSQLiteImplementations = {};
1214
1315/// Web implementation of [AbstractDefaultSqliteOpenFactory]
1416class DefaultSqliteOpenFactory
15- extends AbstractDefaultSqliteOpenFactory <CommonDatabase > {
16- final Future <WebSqlite > _initialized;
17+ extends AbstractDefaultSqliteOpenFactory <CommonDatabase >
18+ implements WebSqliteOpenFactory {
19+ late final Future <WebSqlite > _initialized = Future .sync (() {
20+ final cacheKey = sqliteOptions.webSqliteOptions.wasmUri +
21+ sqliteOptions.webSqliteOptions.workerUri;
22+
23+ if (webSQLiteImplementations.containsKey (cacheKey)) {
24+ return webSQLiteImplementations[cacheKey]! ;
25+ }
26+
27+ webSQLiteImplementations[cacheKey] =
28+ openWebSqlite (sqliteOptions.webSqliteOptions);
29+ return webSQLiteImplementations[cacheKey]! ;
30+ });
1731
1832 DefaultSqliteOpenFactory (
1933 {required super .path,
20- super .sqliteOptions = const SqliteOptions .defaults ()})
21- : _initialized = Future .sync (() {
22- final cacheKey = sqliteOptions.webSqliteOptions.wasmUri +
23- sqliteOptions.webSqliteOptions.workerUri;
24-
25- if (webSQLiteImplementations.containsKey (cacheKey)) {
26- return webSQLiteImplementations[cacheKey]! ;
27- }
28-
29- webSQLiteImplementations[cacheKey] = WebSqlite .open (
30- wasmModule: Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
31- worker: Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
32- );
33- return webSQLiteImplementations[cacheKey]! ;
34- });
34+ super .sqliteOptions = const SqliteOptions .defaults ()}) {
35+ // Make sure initializer starts running immediately
36+ _initialized;
37+ }
38+
39+ @override
40+ Future <WebSqlite > openWebSqlite (WebSqliteOptions options) async {
41+ return WebSqlite .open (
42+ wasmModule: Uri .parse (sqliteOptions.webSqliteOptions.wasmUri),
43+ worker: Uri .parse (sqliteOptions.webSqliteOptions.workerUri),
44+ controller: AsyncSqliteController (),
45+ );
46+ }
3547
3648 @override
3749
0 commit comments