Files
superport_v2/lib/injection_container.dart

43 lines
1.4 KiB
Dart

// 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<void> 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>(() => ApiClient(dio: dio));
// 리포지토리 등록 (예: 벤더)
sl.registerLazySingleton<VendorRepository>(
() => VendorRepositoryRemote(apiClient: sl<ApiClient>()),
);
}