https://pub.dev/packages/get_it
객체 등록을 위한 주요 옵션
- registerSingleton
- registerLazySingleton
- registerFactory
- registerFactoryAsync
- registerSingletonAsync
- registerLazySingletonAsync
1. registerSingleton
- 설명: 객체를 싱글턴으로 등록합니다. 등록 시 즉시 객체를 생성하여 모든 요청에서 동일한 인스턴스를 반환합니다.
- 장점:
- 객체가 즉시 생성되므로 초기화가 필요할 때 사용합니다.
- 모든 요청에 대해 동일한 인스턴스를 반환하므로 상태를 공유할 수 있습니다.
- 단점:
- 초기화 비용이 큰 객체를 등록할 경우 애플리케이션 시작 시 성능에 영향을 줄 수 있습니다.
- 사용예
getIt.registerSingleton<Repository>(DatabaseRepository());
2. registerLazySingleton
- 설명: 객체를 싱글턴으로 등록하되, 첫 번째 요청 시에 객체를 생성합니다.
- 장점:
- 첫 번째 요청이 있을 때까지 객체가 생성되지 않으므로 초기화 비용이 큰 객체의 성능 영향을 줄입니다.
- 모든 요청에 대해 동일한 인스턴스를 반환하여 상태를 공유할 수 있습니다.
- 단점:
- 객체의 생성이 지연되므로 첫 번째 요청 시 약간의 지연이 발생할 수 있습니다.
- 사용 예:
getIt.registerLazySingleton<Repository>(() => DatabaseRepository());
3. registerFactoryAsync
- 설명: 비동기적으로 새로운 객체 인스턴스를 생성하여 반환합니다.
- 장점:
- 객체 생성 시 비동기 작업이 필요한 경우에 사용됩니다.
- 단점:
- 객체를 매번 생성하므로 성능에 약간의 영향을 줄 수 있으며, 비동기 작업이 추가되므로 코드가 복잡해질 수 있습니다.
- 사용 예:
getIt.registerFactoryAsync<Service>(async () => Service(await getIt.getAsync<Repository>()));
4. registerSingletonAsync
- 설명: 비동기적으로 객체를 생성하여 싱글턴으로 등록합니다.
- 장점:
- 초기화에 시간이 걸리는 비동기 작업을 수행한 후 싱글턴 인스턴스를 제공합니다.
- 모든 요청에 대해 동일한 인스턴스를 반환하여 상태를 공유할 수 있습니다.
- 단점:
- 초기화가 완료될 때까지 의존성을 사용할 수 없으므로 코드가 복잡해질 수 있습니다.
- 사용 예:
getIt.registerSingletonAsync<Repository>(async () => DatabaseRepository());
5. registerLazySingletonAsync
- 설명: 첫 번째 요청 시 비동기적으로 객체를 생성하여 싱글턴으로 등록합니다.
- 장점:
- 초기화 비용이 큰 비동기 작업을 첫 번째 요청 시에만 수행하므로 성능 최적화에 유리합니다.
- 모든 요청에 대해 동일한 인스턴스를 반환하여 상태를 공유할 수 있습니다.
- 단점:
- 첫 번째 요청 시 비동기 작업이 수행되므로 약간의 지연이 발생할 수 있습니다.
- 사용 예:
getIt.registerLazySingletonAsync<Repository>(async () => DatabaseRepository());
'Development > Flutter' 카테고리의 다른 글
[Flutter] get_it 으로 의존성 주입 관리하기 - ListView 적용 (0) | 2024.05.19 |
---|---|
[Flutter] FutureBuilder 사용법 (0) | 2024.04.30 |
[Flutter] 외부 위젯 가져와서 사용하기(video_player) (0) | 2024.04.26 |
[Flutter] Dart 문법 - 04. 연산자 (0) | 2024.04.16 |
[Flutter] Dart 문법 - 02. 조건문과 03. 반복문 (0) | 2024.04.11 |