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

소개

플러터(Flutter)는 Google이 개발한 모바일 앱 개발 프레임워크로, 단일 코드베이스에서 iOS와 Android 용 애플리케이션을 개발할 수 있습니다. 한 가지 도전적인 과제는 앱의 상태 관리입니다. 플러터는 상태 관리를 위한 여러 가지 패키지와 기술을 제공하지만, 이 중에서 Injectable을 사용하면 로컬 상태 관리를 효율적으로 수행할 수 있습니다.

Injectable 패키지

Injectable은 플러터 앱에서 의존성 주입(Dependency Injection)을 위한 패키지입니다. 의존성 주입은 객체 간의 의존성을 직접 생성하는 것이 아니라 외부에서 주입받아 사용하는 패턴입니다. 이를 통해 코드의 결합도를 낮추고 유연성과 테스트 용이성을 높일 수 있습니다.

시작하기

먼저, 프로젝트에 Injectable 패키지를 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가합니다:

dependencies:
  injectable: ^1.0.0

그런 다음, 패키지를 설치하기 위해 터미널에서 다음 명령을 실행합니다:

$ flutter pub get

사용 방법

Injectable로 로컬 상태 관리를 효율적으로 수행하려면 다음 단계를 따르세요:

1. 인젝터 설정

main.dart 파일에서 인젝터를 설정해야 합니다. configureInjection() 함수를 호출하여 인젝터를 설정합니다. 예를 들어:

void main() {
  configureInjection();
  runApp(MyApp());
}

2. Injectable 어노테이션 사용

Injectable 패키지를 사용하여 의존성 주입이 필요한 클래스나 프로바이더 함수에 @Injectable() 어노테이션을 붙여줍니다. 예를 들어, 다음과 같이 의존성 주입이 필요한 클래스를 작성할 수 있습니다:

@Injectable()
class MyService {
  // ...
}

3. 의존성 주입

의존성을 주입할 때는 @injectable 어노테이션을 사용하여 해당 클래스나 함수를 주입합니다. 예를 들어, 다음과 같이 클래스 생성자에 어노테이션을 붙여 의존성을 주입할 수 있습니다:

class MyClass {
  final MyService myService;

  MyClass(@injectable this.myService);

  // ...
}

4. 사용

이제 주입한 객체를 사용할 수 있습니다. 예를 들어, 위에서 주입한 MyService를 사용하려면 다음과 같이 코드를 작성할 수 있습니다:

class MyWidget extends StatelessWidget {
  Widget build(BuildContext context) {
    final myService = getIt<MyService>();

    // myService 사용

    return Container();
  }
}

결론

Injectable을 사용하면 플러터 앱의 로컬 상태 관리를 효율적으로 처리할 수 있습니다. 의존성 주입을 통해 코드의 유연성과 테스트 용이성을 높일 수 있고, Injectabel 패키지는 이를 쉽게 구현할 수 있도록 도와줍니다. 코드의 결합도를 낮추고 유지보수성을 향상시키기 위해 Injectable을 사용해보세요.

참고 자료