43 lines
1.4 KiB
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>()),
|
|
);
|
|
}
|