플러터에서 Get It 패키지 사용하기: 심층 가이드

2024. 7. 2. 12:05Flutter/Flutter Programming

반응형

GetIt은 플러터에서 의존성 주입(DI)을 위한 널리 사용되는 패키지입니다.

의존성 주입은 객체 간 결합을 느슨하게 하고 코드 테스트 및 유지 관리를 용이하게 하는 설계 패턴입니다.

GetIt은 간단하고 사용하기 쉬우면서도 강력한 기능을 제공하여 플러터 개발자들에게 인기 있는 선택입니다.

1. Get It 설치 및 설정

GetIt을 사용하려면 먼저 프로젝트에 패키지를 설치해야 합니다.

다음 명령을 사용하여 pubspec.yaml 파일에 GetIt 종속성을 추가하세요.

dependencies:
  get_it: ^7.0.0
 

설치가 완료되면 GetIt 인스턴스를 가져와 사용할 수 있습니다.

import 'package:get_it/get_it.dart';

void main() {
  // GetIt 인스턴스 가져오기
  GetIt locator = GetIt.instance;

  // ... 나머지 코드 ...
}
 

2. 의존성 등록

GetIt의 핵심 기능은 의존성 등록입니다. 의존성은 클래스, 함수 또는 기타 객체를 의미하며, 다른 객체에 의해 사용됩니다.

GetIt을 사용하여 다음과 같이 의존성을 등록할 수 있습니다.

// 싱글톤으로 등록 (한 번만 생성된 인스턴스 반환)
locator.registerSingleton<MyService>(() => MyService());

// 매번 새 인스턴스 생성
locator.registerFactory<MyService>(() => MyService());
 

위 코드에서 MyService는 의존성으로 등록하려는 클래스입니다.

registerSingleton 메서드는 MyService의 싱글톤 인스턴스를 생성하고 locator에 등록합니다.

registerFactory 메서드는 매번 MyService의 새 인스턴스를 생성하여 반환합니다.

3. 의존성 가져오기

등록된 의존성은 다음과 같이 locator를 사용하여 가져올 수 있습니다.

// 싱글톤 인스턴스 가져오기
MyService myService = locator<MyService>();

// 새 인스턴스 가져오기
MyService myService = locator.get<MyService>();
 

위 코드에서 myService 변수에는 MyService의 인스턴스가 할당됩니다.

locator<MyService>는 싱글톤 인스턴스를 반환하고, locator.get<MyService>()는 매번 새 인스턴스를 생성하여 반환합니다.

4. Get It의 주요 기능

GetIt은 의존성 등록 및 가져오기 외에도 다음과 같은 다양한 기능을 제공합니다.

  • 파라미터화된 타입: 등록된 의존성에 대한 파라미터를 지정할 수 있습니다.
  • 인스턴스 이름: 동일한 타입의 여러 인스턴스를 등록하고 이름으로 구별할 수 있습니다.
  • 범위 관리: 의존성의 범위를 설정하여 특정 영역에서만 사용할 수 있도록 할 수 있습니다.
  • 사용자 정의 바인딩: 의존성 생성 및 가져오기를 위한 사용자 정의 로직을 구현할 수 있습니다.

5. Get It 사용의 장점

GetIt을 사용하면 다음과 같은 장점을 얻을 수 있습니다.

  • 코드 결합 감소: 의존성을 명시적으로 등록하고 가져옴으로써 객체 간 결합을 느슨하게 합니다.
  • 테스트 용이성: 의존성을 모의 객체로 쉽게 바꿔 테스트 코드를 작성할 수 있습니다.
  • 유지 관리 용이성: 코드를 변경할 때 의존성을 쉽게 찾고 수정할 수 있습니다.
  • 재사용성 증가: 등록된 의존성을 여러 곳에서 재사용할 수 있습니다.

6. Get It 사용 시 고려 사항

GetIt을 사용할 때 다음 사항을 고려해야 합니다.

 

1. 적절한 의존성 등록

  • 필요한 의존성을 모두 등록하고 올바른 타입으로 등록되었는지 확인해야 합니다.
  • 의존성을 등록할 때 registerSingleton 또는 registerFactory 메서드를 사용해야 합니다.
  • registerSingleton은 한 번만 생성된 인스턴스를 반환하고, registerFactory는 매번 새 인스턴스를 생성하여 반환합니다.

2. 순환 참조 방지

  • 서로 의존하는 의존성을 등록하지 않도록 주의해야 합니다.
  • 순환 참조가 발생하면 GetIt은 예외를 발생시킵니다.
  • 의존성 그래프를 사용하여 순환 참조를 확인할 수 있습니다.

3. 명확한 코드 작성

  • 의존성을 등록하고 가져오는 코드를 명확하게 작성해야 합니다.
  • 코드를 읽는 사람이 의존성이 어떻게 사용되는지 쉽게 이해할 수 있도록 해야 합니다.
  • 주석을 사용하여 의존성의 역할을 설명하는 것이 좋습니다.

4. 테스트 코드 작성

  • GetIt을 사용하는 코드를 테스트하는 것이 중요합니다.
  • 의존성을 모의 객체로 바꿔 테스트 코드를 작성할 수 있습니다.
  • 이렇게 하면 코드가 예상대로 작동하는지 확인할 수 있습니다.

7. Get It 사용 사례

GetIt은 다양한 상황에서 사용될 수 있습니다. 다음은 몇 가지 일반적인 사용 사례입니다.

  • 서비스 객체 관리: 네트워크 연결, 데이터 저장소 액세스 또는 기타 백엔드 작업과 같은 서비스 객체를 관리하는 데 사용할 수 있습니다.
  • 뷰모델 주입: 뷰모델에 필요한 의존성을 주입하는 데 사용할 수 있습니다.
  • 네비게이션 관리: 네비게이션 로직을 구현하고 페이지 간 이동을 관리하는 데 사용할 수 있습니다.
  • 환경 설정 관리: 개발, 테스트 및 프로덕션 환경에 따라 서로 다른 의존성을 설정하는 데 사용할 수 있습니다.

8. Get It 대안

GetIt 외에도 플러터에서 사용할 수 있는 몇 가지 다른 DI 패키지가 있습니다.

  • provider: 공식 플러터 패키지이며 간단하고 사용하기 쉬운 API를 제공합니다.
  • riverpod: 상태 관리 및 의존성 주입을 위한 강력하고 유연한 패키지입니다.
  • bloc: BLoC 패턴을 위한 공식 플러터 패키지입니다.

9. 결론

GetIt은 플러터에서 의존성 주입을 위한 강력하고 유연한 패키지입니다.

의존성을 관리하고 코드를 테스트 및 유지 관리하기 쉬운 방법을 제공합니다.

GetIt을 사용하면 코드 결합을 줄이고 코드 재사용성을 높일 수 있습니다.


수발가족을 위한 일기장 “나비일기장

 

https://play.google.com/store/apps/details?id=com.maccrey.navi_diary_release

 

구글플레이 앱 배포의 시작! 비공개테스트 20명의 테스터모집을 위한 앱 "테스터 쉐어"

 

https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release

 

카카오톡 오픈 채팅방

https://open.kakao.com/o/gsS8Jbzg

 

반응형