This commit is contained in:
Phuoc Nguyen
2025-10-10 16:38:07 +07:00
parent e5b247d622
commit b94c158004
177 changed files with 25080 additions and 152 deletions

View 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();
}

View 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
}