// ignore_for_file: public_member_api_docs import 'package:dio/dio.dart'; import 'package:get_it/get_it.dart'; import 'core/network/api_client.dart'; import 'core/network/interceptors/auth_interceptor.dart'; import 'features/masters/vendor/data/repositories/vendor_repository_remote.dart'; import 'features/masters/vendor/domain/repositories/vendor_repository.dart'; /// 전역 DI 컨테이너 final GetIt sl = GetIt.instance; /// 의존성 등록(스켈레톤) /// - Environment.initialize() 이후 호출하여 baseUrl/타임아웃 등을 주입한다. Future initInjection({required String baseUrl, Duration? connectTimeout, Duration? receiveTimeout}) async { // Dio 기본 옵션 설정 final options = BaseOptions( baseUrl: baseUrl, connectTimeout: connectTimeout ?? const Duration(seconds: 15), receiveTimeout: receiveTimeout ?? const Duration(seconds: 30), headers: const { 'Accept': 'application/json', }, ); final dio = Dio(options); // 인터셉터 등록 (Auth 등) dio.interceptors.add(AuthInterceptor()); // 개발용 로거는 필요 시 추가 (pretty_dio_logger 등) // if (!kReleaseMode) { dio.interceptors.add(PrettyDioLogger(...)); } // ApiClient 등록 sl.registerLazySingleton(() => ApiClient(dio: dio)); // 리포지토리 등록 (예: 벤더) sl.registerLazySingleton( () => VendorRepositoryRemote(apiClient: sl()), ); }