feat: Initializes Objectbox database on startup
Integrates Objectbox database initialization into the main application startup process. Adds `path` and `path_provider` as direct dependencies, which are typically required for Objectbox to locate the database directory.
This commit is contained in:
parent
83a20c548b
commit
8eddb5d4b7
34
lib/backend/objectbox/objectbox_manager.dart
Normal file
34
lib/backend/objectbox/objectbox_manager.dart
Normal file
@ -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<ObjectboxManager> create() async {
|
||||
Directory directory;
|
||||
if (Platform.isIOS) {
|
||||
directory = await getLibraryDirectory();
|
||||
} else {
|
||||
directory = await getApplicationSupportDirectory();
|
||||
}
|
||||
// Future<Store> 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();
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user