57 lines
1.5 KiB
Dart
57 lines
1.5 KiB
Dart
import 'package:get_it/get_it.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import 'storage_service.dart';
|
|
import 'notification_service.dart';
|
|
import 'encouragement_service.dart';
|
|
import 'points_service.dart';
|
|
import 'achievement_service.dart';
|
|
|
|
/// GetIt instance for dependency injection
|
|
final getIt = GetIt.instance;
|
|
|
|
/// Initialize dependency injection
|
|
Future<void> initializeDI() async {
|
|
try {
|
|
// Register services as singletons
|
|
getIt.registerSingletonAsync<StorageService>(() async {
|
|
final service = StorageService();
|
|
await service.init();
|
|
return service;
|
|
});
|
|
|
|
getIt.registerSingletonAsync<NotificationService>(() async {
|
|
final service = NotificationService();
|
|
await service.initialize();
|
|
await service.requestPermissions();
|
|
return service;
|
|
});
|
|
|
|
getIt.registerSingletonAsync<EncouragementService>(() async {
|
|
final service = EncouragementService();
|
|
await service.loadMessages();
|
|
return service;
|
|
});
|
|
|
|
// Register synchronous services
|
|
getIt.registerSingleton<PointsService>(PointsService());
|
|
getIt.registerSingleton<AchievementService>(AchievementService());
|
|
|
|
// Wait for all services to be initialized
|
|
await getIt.allReady();
|
|
|
|
if (kDebugMode) {
|
|
print('Dependency injection initialized successfully');
|
|
}
|
|
} catch (e) {
|
|
if (kDebugMode) {
|
|
print('Failed to initialize dependency injection: $e');
|
|
}
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// Reset dependency injection (for testing)
|
|
void resetDI() {
|
|
getIt.reset();
|
|
} |