Skip to content

Commit 292bcf6

Browse files
committed
Ensure offline support works in linux
1 parent 6a3e452 commit 292bcf6

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

templates/flutter/lib/src/client_offline_mixin.dart.twig

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import 'package:sembast/utils/value_utils.dart';
1010

1111
import 'enums.dart';
1212
import 'exception.dart';
13-
import 'offline_db.dart';
13+
import 'offline_db_stub.dart'
14+
if (dart.library.html) 'offline_db_web.dart'
15+
if (dart.library.io) 'offline_db_io.dart';
1416
import 'response.dart';
1517

1618
class AccessTimestamp {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import 'dart:io';
2+
3+
import 'package:sembast/sembast.dart';
4+
import 'package:sembast_sqflite/sembast_sqflite.dart';
5+
import 'package:sqflite/sqflite.dart' as sqflite;
6+
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
7+
8+
class OfflineDatabase {
9+
static final OfflineDatabase instance = OfflineDatabase._internal();
10+
Database? _db;
11+
12+
OfflineDatabase._internal();
13+
14+
Future<Database> db() async {
15+
if (_db == null) {
16+
final factory = getDatabaseFactorySqflite(
17+
Platform.isLinux || Platform.isWindows
18+
? databaseFactoryFfi
19+
: sqflite.databaseFactory,
20+
);
21+
_db = await factory.openDatabase('{{ spec.title | caseLower }}.db');
22+
}
23+
return _db!;
24+
}
25+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import 'package:sembast/sembast.dart';
2+
3+
class OfflineDatabase {
4+
static final OfflineDatabase instance = OfflineDatabase._internal();
5+
Database? _db;
6+
7+
OfflineDatabase._internal();
8+
9+
Future<Database> db() async {
10+
throw UnimplementedError();
11+
}
12+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import 'package:sembast/sembast.dart';
2+
import 'package:sembast_web/sembast_web.dart';
3+
4+
class OfflineDatabase {
5+
static final OfflineDatabase instance = OfflineDatabase._internal();
6+
Database? _db;
7+
8+
OfflineDatabase._internal();
9+
10+
Future<Database> db() async {
11+
if (_db == null) {
12+
final factory = databaseFactoryWeb;
13+
_db = await factory.openDatabase('{{ spec.title | caseLower }}.db');
14+
}
15+
return _db!;
16+
}
17+
}

templates/flutter/pubspec.yaml.twig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ dependencies:
2323
path: ^1.8.2
2424
sembast: ^3.4.0+6
2525
sembast_sqflite: ^2.1.0+1
26+
sqflite_common_ffi: ^2.2.2
2627
sembast_web: ^2.1.0+4
2728
sqflite: ^2.2.2
2829

0 commit comments

Comments
 (0)