import 'package:get_it/get_it.dart'; import 'package:dio/dio.dart'; import '../api/services/auth_service.dart'; import '../api/interceptors/auth_interceptor.dart'; import '../data/repositories/auth_repository.dart'; import '../features/auth/controllers/auth_cubit.dart'; import '../security/secure_storage.dart'; final getIt = GetIt.instance; Future setupDependencies() async { // Register Dio client getIt.registerSingleton(_createDioClient()); // Register secure storage getIt.registerSingleton(SecureStorage()); // Register services getIt.registerSingleton(AuthService(getIt())); // Register repositories getIt.registerSingleton( AuthRepository(getIt(), getIt()), ); // Add auth interceptor after repository is available getIt().interceptors.add( AuthInterceptor(getIt(), getIt()), ); // Register controllers/cubits getIt.registerFactory(() => AuthCubit(getIt())); } Dio _createDioClient() { final dio = Dio( BaseOptions( baseUrl: 'https://api.yourbank.com/v1', connectTimeout: const Duration(seconds: 5), receiveTimeout: const Duration(seconds: 3), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, ), ); // Add logging interceptor for development dio.interceptors.add(LogInterceptor( request: true, requestHeader: true, requestBody: true, responseHeader: true, responseBody: true, error: true, )); return dio; }