[flutter] 플러터에서 Inject와 Injectable의 기능 및 사용법

소개

플러터(Flutter)는 구글에서 개발한 모바일 애플리케이션 개발 프레임워크로, Dart 언어를 사용하여 크로스 플랫폼 앱을 개발할 수 있습니다. 의존성 주입(Dependency Injection)은 플러터 애플리케이션에서 코드의 재사용성과 테스트 용이성을 높이기 위해 중요한 개념 중 하나입니다. 여기서는 플러터에서 주로 사용되는 Inject와 Injectable 라이브러리의 기능과 사용법에 대해 알아보겠습니다.

Inject

Inject는 플러터 프로젝트에서 의존성 주입을 수행하기 위한 라이브러리입니다. Inject를 사용하면 앱의 다양한 클래스 사이에서 의존성을 간편하게 주입할 수 있습니다. 주요 기능은 다음과 같습니다:

사용법

  1. Inject 패키지 추가

    플러터 프로젝트에 Inject 패키지를 추가합니다. pubspec.yaml 파일의 dependencies 섹션에 아래 내용을 추가합니다:

    dependencies:
      injectable: ^1.0.0
    
  2. 클래스에 @injectable 애노테이션 추가

    주입하려는 클래스 위에 @injectable 애노테이션을 추가합니다.

    @injectable
    class ExampleService {
      // ...
    }
    
  3. 생성자에 @injectable 애노테이션 추가

    주입하려는 클래스의 생성자 위에도 @injectable 애노테이션을 추가합니다.

    @injectable
    class ExampleService {
      ExampleService();
    
      // ...
    }
    
  4. 의존성 주입하기

    필요한 클래스에서 inject 함수를 사용하여 주입된 객체를 얻습니다.

    final exampleService = inject<ExampleService>();
    

Injectable

Injectable은 플러터에서 의존성 주입을 효과적으로 관리하기 위한 다양한 기능을 제공하는 라이브러리입니다. 주요 기능은 다음과 같습니다:

Injectable은 Inject 패키지를 기반으로 한다는 점을 유의해야 합니다.

사용법

  1. Injectable 패키지 추가

    플러터 프로젝트에 Injectable 패키지를 추가합니다. pubspec.yaml 파일의 dependencies 섹션에 아래 내용을 추가합니다:

    dependencies:
      injectable: ^1.0.0
    
  2. 클래스에 @Injectable 애노테이션 추가

    주입하려는 클래스 위에 @Injectable 애노테이션을 추가합니다.

    @Injectable()
    class ExampleService {
      // ...
    }
    
  3. 모듈 클래스 생성

    의존성 주입을 관리하기 위한 모듈 클래스를 생성합니다. 이 클래스에 @module 애노테이션을 추가하여 클래스의 인스턴스를 등록하고 관리합니다.

    @module
    class AppModule {
      // ...
    }
    
  4. 주입하기

    필요한 클래스에서 getIt 함수를 사용하여 주입된 객체를 얻습니다.

    final exampleService = getIt<ExampleService>();
    

결론

Inject와 Injectable은 플러터 애플리케이션에서 의존성 주입을 효율적으로 수행할 수 있도록 도와주는 라이브러리입니다. 이를 통해 코드의 재사용성과 테스트 용이성을 개선할 수 있습니다. 적절히 사용하여 플러터 앱 개발의 생산성을 높일 수 있습니다.

참고 자료