diff --git a/lib/backend/objectbox/objectbox_manager.dart b/lib/backend/objectbox/objectbox_manager.dart new file mode 100644 index 0000000..36f626e --- /dev/null +++ b/lib/backend/objectbox/objectbox_manager.dart @@ -0,0 +1,34 @@ +import 'dart:io'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; + +import 'package:barcode_scanner/backend/objectbox/objectbox.g.dart'; + +late ObjectboxManager objectboxManager; + +class ObjectboxManager { + /// The Store of this app. + late final Store store; + + ObjectboxManager._create(this.store); + + /// Create an instance of ObjectBox to use throughout the app. + static Future create() async { + Directory directory; + if (Platform.isIOS) { + directory = await getLibraryDirectory(); + } else { + directory = await getApplicationSupportDirectory(); + } + // Future openStore() {...} is defined in the generated objectbox.g.dart + final store = await openStore( + directory: p.join(directory.path, "objectbox_db"), + ); + return ObjectboxManager._create(store); + } + + /// Call it before `runApp()` in main.dart + static Future init() async { + objectboxManager = await ObjectboxManager.create(); + } +} diff --git a/lib/services/service_initializer.dart b/lib/services/service_initializer.dart index bc83a62..cce957c 100644 --- a/lib/services/service_initializer.dart +++ b/lib/services/service_initializer.dart @@ -1,3 +1,4 @@ +import 'package:barcode_scanner/backend/objectbox/objectbox_manager.dart'; import 'package:barcode_scanner/pages/login_page/login_page_model.dart'; import 'package:barcode_scanner/provider_container.dart'; import 'package:barcode_scanner/themes/app_theme.dart'; @@ -6,6 +7,7 @@ import 'package:flutter/foundation.dart'; class InitializerService { static Future init() async { + await ObjectboxManager.init(); await AppTheme.initialize(); await providerContainer .read(loginPageModelProvider.notifier) diff --git a/pubspec.lock b/pubspec.lock index 2ae9133..40cfd72 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -622,7 +622,7 @@ packages: source: hosted version: "2.2.0" path: - dependency: transitive + dependency: "direct main" description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" @@ -630,7 +630,7 @@ packages: source: hosted version: "1.9.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" diff --git a/pubspec.yaml b/pubspec.yaml index 9795168..00681e2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -52,6 +52,8 @@ dependencies: shared_preferences: ^2.5.3 objectbox: ^4.3.0 objectbox_flutter_libs: any + path_provider: ^2.1.5 + path: ^1.9.1 dev_dependencies: flutter_test: