[flutter] Injectable을 사용하여 플러터 앱의 로컬 상태 관리 개선하기

앱 개발 시 상태 관리는 매우 중요한 부분입니다. 플러터(Flutter) 앱에서도 상태 관리를 효과적으로 처리하기 위해 다양한 패키지와 라이브러리가 제공되고 있습니다. 이 중에서 Injectable은 의존성 주입(Dependency Injection)을 통해 플러터 앱의 로컬 상태 관리를 개선하는 패키지로 많은 개발자들에게 사랑받고 있습니다.

이번 글에서는 Injectable 패키지를 사용하여 플러터 앱의 로컬 상태 관리를 개선하는 방법에 대해 알아보겠습니다. 아래는 필요한 내용을 순서대로 설명한 목차입니다.

목차

  1. Injectable 패키지란?
  2. Injectable 설정하기
  3. Injectable 사용하기
  4. 결론

Injectable 패키지란?

Injectable은 플러터 앱에서 의존성 주입(Dependency Injection)을 쉽게 처리할 수 있도록 도와주는 패키지입니다. 의존성 주입을 사용하면 컴포넌트 간의 결합도를 낮추고 테스트할 때 유연성을 높일 수 있습니다.

Injectable 패키지를 사용하면 클래스나 함수에 @injectable 어노테이션을 추가하여 의존성 주입을 쉽게 설정할 수 있습니다.

Injectable 설정하기

Injectable을 사용하기 위해서는 먼저 프로젝트의 pubspec.yaml 파일에 패키지를 추가해야 합니다. 아래는 예시입니다.

dependencies:
  injectable: ^1.0.0

이후, 터미널에서 flutter pub get 명령을 실행하여 패키지를 가져옵니다.

Injectable은 다양한 방식으로 사용할 수 있지만, 주로 코드 생성 설정을 사용하는 방법을 추천합니다. 이를 위해 프로젝트의 pubspec.yaml 파일에 다음과 같이 설정합니다.

dev_dependencies:
  build_runner: ^1.0.0
  injectable_generator: ^1.0.0

그리고 main.dart 파일에 다음 코드를 추가합니다.

import 'package:injectable/injectable.dart';

// injectable 코드 생성 파일
import 'package:example/injectable.dart';

void main() {
  configureInjection(Environment.prod); // 환경 설정

  runApp(MyApp());
}

위 코드에서 configureInjection 함수에 환경 설정을 전달해주어야 합니다. 일반적으로 Environment.prod를 사용하면 됩니다.

Injectable 사용하기

Injectable 설정이 완료되면, 의존성 주입을 사용할 수 있게 됩니다. Injectable 패키지는 여러 가지 방식으로 의존성 주입을 지원합니다. 대표적인 방식은 @Injectable 어노테이션을 사용하는 방법입니다.

@injectable
class MyService {
  // ...
}

위와 같이 @injectable 어노테이션을 클래스에 추가하면, 해당 클래스의 인스턴스가 필요한 곳에서 알아서 생성 및 주입되게 됩니다.

Injectable 패키지는 또한 @lazySingleton, @factoryMethod@preResolve 등의 어노테이션을 제공하여 의존성 주입을 세밀하게 제어할 수 있습니다.

결론

Injectable 패키지를 사용하면 플러터 앱의 로컬 상태 관리를 더욱 효과적으로 개선할 수 있습니다. 의존성 주입을 통해 결합도를 낮추고 테스트 가능한 코드를 작성할 수 있습니다.

이번 글에서는 Injectable 패키지의 기본적인 사용법에 대해 다뤄보았습니다. 더 자세한 내용은 공식 문서를 참고하시기 바랍니다.