initialize static method
Initialize dependencies with baseUrl and context
baseUrl - The base URL for API calls (provided by the app)
context - BuildContext for showing screens (optional, can use navigatorKey instead)
navigatorKey - GlobalKey for Navigator (optional, can use context instead)
Implementation
static Future<void> initialize(
String baseUrl, {
BuildContext? context,
GlobalKey<NavigatorState>? navigatorKey,
}) async {
// Store context or navigator key for showing screens
if (context != null) {
_context = context;
DebugLogger.log('[DependencyInjection] Context provided for showing screens');
}
if (navigatorKey != null) {
_navigatorKey = navigatorKey;
DebugLogger.log('[DependencyInjection] Navigator key provided for showing screens');
}
DebugLogger.log('[DependencyInjection] Using app-provided baseUrl: $baseUrl');
// Initialize Dio with logging interceptor
_dio = Dio(
BaseOptions(
baseUrl: baseUrl,
connectTimeout: const Duration(seconds: 30),
receiveTimeout: const Duration(seconds: 30),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
),
);
// Add logging interceptor
_dio!.interceptors.add(LoggingInterceptor());
// Initialize data sources
final authRemoteDataSource = AuthRemoteDataSource(
dio: _dio!,
baseUrl: baseUrl,
);
_deviceInfoDataSource = DeviceInfoDataSource(HaloAuthPlatform.instance);
// Initialize repository
_authRepository = AuthRepositoryImpl(
remoteDataSource: authRemoteDataSource,
);
// Initialize use case
_authenticateUseCase = AuthenticateUseCase(repository: _authRepository!);
}