import 'package:get_it/get_it.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:http/http.dart' as http; import 'data/datasources/local/shared_prefs.dart'; import 'data/datasources/remote/api_client.dart'; import 'data/repositories/auth_repository.dart'; import 'data/repositories/user_repository.dart'; import 'presentation/providers/auth_provider.dart'; import 'presentation/providers/user_provider.dart'; final GetIt sl = GetIt.instance; Future init() async { // External dependencies final sharedPreferences = await SharedPreferences.getInstance(); sl.registerLazySingleton(() => sharedPreferences); // HTTP Client sl.registerLazySingleton(() => http.Client()); // Data sources sl.registerLazySingleton(() => SharedPrefs(sl())); sl.registerLazySingleton(() => ApiClient(sl())); // Repositories sl.registerLazySingleton(() => AuthRepository( apiClient: sl(), prefs: sl(), )); sl.registerLazySingleton(() => UserRepository( apiClient: sl(), )); // Providers sl.registerFactory(() => AuthProvider(authRepository: sl())); sl.registerFactory(() => UserProvider(userRepository: sl())); }