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/pages/login_page/login_page_model.dart';
|
||||||
import 'package:barcode_scanner/provider_container.dart';
|
import 'package:barcode_scanner/provider_container.dart';
|
||||||
import 'package:barcode_scanner/themes/app_theme.dart';
|
import 'package:barcode_scanner/themes/app_theme.dart';
|
||||||
@ -6,6 +7,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
|
|
||||||
class InitializerService {
|
class InitializerService {
|
||||||
static Future init() async {
|
static Future init() async {
|
||||||
|
await ObjectboxManager.init();
|
||||||
await AppTheme.initialize();
|
await AppTheme.initialize();
|
||||||
await providerContainer
|
await providerContainer
|
||||||
.read(loginPageModelProvider.notifier)
|
.read(loginPageModelProvider.notifier)
|
||||||
|
@ -622,7 +622,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.2.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
||||||
@ -630,7 +630,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.9.1"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
|
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
|
||||||
|
@ -52,6 +52,8 @@ dependencies:
|
|||||||
shared_preferences: ^2.5.3
|
shared_preferences: ^2.5.3
|
||||||
objectbox: ^4.3.0
|
objectbox: ^4.3.0
|
||||||
objectbox_flutter_libs: any
|
objectbox_flutter_libs: any
|
||||||
|
path_provider: ^2.1.5
|
||||||
|
path: ^1.9.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user