728x90
GetIt은 Flutter에서 의존성 주입(Dependency Injection, DI)을 간편하게 구현할 수 있도록 도와주는 라이브러리입니다. 이를 통해 싱글턴 객체를 효율적으로 관리하고, 애플리케이션 전역에서 동일한 인스턴스를 손쉽게 호출할 수 있습니다.
왜 GetIt을 사용해야 할까?
- 전역 객체 관리: Provider 없이도 의존성을 전역적으로 관리할 수 있습니다.
- 싱글턴 패턴 지원: 한 번 등록하면 앱 어디서든 동일한 인스턴스에 접근할 수 있습니다.
- 직관적인 API: getIt<MyClass>() 한 줄로 객체를 가져올 수 있습니다.
- 생성자 주입 지원: 팩토리 패턴을 통해 객체 생성 로직을 유연하게 관리할 수 있습니다.
GetIt 설치
dependencies:
get_it: ^7.6.4
GetIt 인스턴스 등록
import 'package:get_it/get_it.dart';
final getIt = GetIt.instance;
void setupLocator() {
getIt.registerSingleton<ApiService>(ApiService());
}
class ApiService {
void fetchData() {
print("API 데이터 가져오기");
}
}
registerSingleton()을 사용하여 ApiService를 전역에서 관리할 수 있습니다.
GetIt을 사용하여 객체 호출
void main() {
setupLocator();
final apiService = getIt<ApiService>();
apiService.fetchData();
}
getIt<ApiService>()를 통해 어디서든 동일한 인스턴스를 호출할 수 있습니다.
추가 기능
Lazy Singleton (최초 호출 시 객체 생성)
getIt.registerLazySingleton<ApiService>(() => ApiService());
앱 실행 시 즉시 생성되지 않고, 필요할 때 최초 한 번만 생성됩니다.
팩토리 패턴 활용 (매번 새로운 객체 생성)
getIt.registerFactory<ApiService>(() => ApiService());
호출할 때마다 새로운 인스턴스가 생성됩니다.
매개변수가 있는 객체 등록
getIt.registerFactoryParam<UserService, String, void>(
(username, _) => UserService(username),
);
매개변수를 받아 객체를 동적으로 생성할 수 있습니다.
GetIt과 다른 의존성 관리 라이브러리 비교
- Provider: Flutter에서 권장하는 상태 관리 및 의존성 주입 패턴으로, 간단하고 직관적이지만 규모가 커질수록 관리가 어려울 수 있습니다.
- Riverpod: Provider의 개선 버전으로, 더 안전하고 강력한 기능을 제공합니다. 그러나 러닝 커브가 있을 수 있습니다.
- GetIt: 전역적으로 객체를 관리할 수 있으며, 사용이 간편합니다. 하지만 Service Locator 패턴에 대한 이해가 필요합니다.
728x90
LIST
'Flutter' 카테고리의 다른 글
배포 후 카카오 로그인 안될 때 해결 방법 (4) | 2025.04.01 |
---|---|
Flutter에서 Agora SDK 통합 시 발생하는 aosl.xcframework 충돌 해결하기 (0) | 2025.03.20 |
Flutter Hive (1) | 2025.03.12 |
Flutter에서 ButtonStyle 마스터하기 – 완벽 가이드 (0) | 2025.03.09 |
Flutter에서 GPU 렌더링 이해하기: Skia에서 Impeller까지 (1) | 2025.03.07 |