환경 초기화 및 벤더 리포지토리 스켈레톤 도입
This commit is contained in:
42
lib/injection_container.dart
Normal file
42
lib/injection_container.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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>()),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user