runable
This commit is contained in:
49
lib/core/di/injection_container.dart
Normal file
49
lib/core/di/injection_container.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import '../network/dio_client.dart';
|
||||
import '../network/network_info.dart';
|
||||
|
||||
/// Service locator instance
|
||||
final sl = GetIt.instance;
|
||||
|
||||
/// Initialize all dependencies
|
||||
///
|
||||
/// This function registers all the dependencies required by the app
|
||||
/// in the GetIt service locator. Call this in main() before runApp().
|
||||
Future<void> initDependencies() async {
|
||||
// ===== Core =====
|
||||
|
||||
// Connectivity (external) - Register first as it's a dependency
|
||||
sl.registerLazySingleton<Connectivity>(
|
||||
() => Connectivity(),
|
||||
);
|
||||
|
||||
// Network Info
|
||||
sl.registerLazySingleton<NetworkInfo>(
|
||||
() => NetworkInfo(sl()),
|
||||
);
|
||||
|
||||
// Dio Client
|
||||
sl.registerLazySingleton<DioClient>(
|
||||
() => DioClient(),
|
||||
);
|
||||
|
||||
// ===== Data Sources =====
|
||||
// Note: Data sources are managed by Riverpod providers
|
||||
// No direct registration needed here
|
||||
|
||||
// ===== Repositories =====
|
||||
// TODO: Register repositories when they are implemented
|
||||
|
||||
// ===== Use Cases =====
|
||||
// TODO: Register use cases when they are implemented
|
||||
|
||||
// ===== Providers (Riverpod) =====
|
||||
// Note: Riverpod providers are registered differently
|
||||
// This is just for dependency injection of external dependencies
|
||||
}
|
||||
|
||||
/// Clear all dependencies (useful for testing)
|
||||
void resetDependencies() {
|
||||
sl.reset();
|
||||
}
|
||||
22
lib/core/di/service_locator.dart
Normal file
22
lib/core/di/service_locator.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
import '../network/dio_client.dart';
|
||||
import '../network/network_info.dart';
|
||||
|
||||
final getIt = GetIt.instance;
|
||||
|
||||
/// Setup dependency injection
|
||||
Future<void> setupServiceLocator() async {
|
||||
// External dependencies
|
||||
getIt.registerLazySingleton(() => Connectivity());
|
||||
|
||||
// Core
|
||||
getIt.registerLazySingleton(() => DioClient());
|
||||
getIt.registerLazySingleton(() => NetworkInfo(getIt()));
|
||||
|
||||
// Data sources - to be added when features are implemented
|
||||
|
||||
// Repositories - to be added when features are implemented
|
||||
|
||||
// Use cases - to be added when features are implemented
|
||||
}
|
||||
Reference in New Issue
Block a user