feat: API 통합을 위한 기초 인프라 구축
- 네트워크 레이어 구현 (Dio 기반 ApiClient) - 환경별 설정 관리 시스템 구축 - 의존성 주입 설정 (GetIt) - API 엔드포인트 상수 정의 - 인터셉터 구현 (Auth, Error, Logging) - 프로젝트 아키텍처 개선 (core, data, di 디렉토리 구조) - API 통합 계획서 및 요구사항 문서 작성 - 필요 패키지 추가 (dio, flutter_secure_storage, get_it 등)
This commit is contained in:
65
lib/di/injection_container.dart
Normal file
65
lib/di/injection_container.dart
Normal file
@@ -0,0 +1,65 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import '../core/config/environment.dart';
|
||||
import '../data/datasources/remote/api_client.dart';
|
||||
|
||||
/// GetIt 인스턴스
|
||||
final getIt = GetIt.instance;
|
||||
|
||||
/// 의존성 주입 설정
|
||||
Future<void> setupDependencies() async {
|
||||
// 환경 초기화
|
||||
await Environment.initialize();
|
||||
|
||||
// 외부 라이브러리
|
||||
getIt.registerLazySingleton(() => Dio());
|
||||
getIt.registerLazySingleton(() => const FlutterSecureStorage());
|
||||
|
||||
// API 클라이언트
|
||||
getIt.registerLazySingleton(() => ApiClient());
|
||||
|
||||
// 데이터소스
|
||||
// TODO: Remote datasources will be registered here
|
||||
|
||||
// 리포지토리
|
||||
// TODO: Repositories will be registered here
|
||||
|
||||
// 유스케이스
|
||||
// TODO: Use cases will be registered here
|
||||
|
||||
// 컨트롤러/프로바이더
|
||||
// TODO: Controllers will be registered here
|
||||
}
|
||||
|
||||
/// 의존성 리셋 (테스트용)
|
||||
Future<void> resetDependencies() async {
|
||||
await getIt.reset();
|
||||
}
|
||||
|
||||
/// 특정 타입의 의존성 가져오기
|
||||
T inject<T extends Object>() => getIt.get<T>();
|
||||
|
||||
/// 특정 타입의 의존성이 등록되어 있는지 확인
|
||||
bool isRegistered<T extends Object>() => getIt.isRegistered<T>();
|
||||
|
||||
/// 의존성 등록 헬퍼 함수들
|
||||
extension GetItHelpers on GetIt {
|
||||
/// 싱글톤 등록 헬퍼
|
||||
void registerSingletonIfNotRegistered<T extends Object>(
|
||||
T Function() factory,
|
||||
) {
|
||||
if (!isRegistered<T>()) {
|
||||
registerLazySingleton<T>(factory);
|
||||
}
|
||||
}
|
||||
|
||||
/// 팩토리 등록 헬퍼
|
||||
void registerFactoryIfNotRegistered<T extends Object>(
|
||||
T Function() factory,
|
||||
) {
|
||||
if (!isRegistered<T>()) {
|
||||
registerFactory<T>(factory);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user