[flutter] Injectable을 사용하여 플러터 앱의 코드 유지 보수성 높이기

플러터(Flutter)는 크로스 플랫폼 모바일 애플리케이션 개발을 위한 인기 있는 프레임워크입니다. 그러나 앱이 커지고 복잡해질수록 코드를 유지 보수하기 어려워질 수 있습니다. 이러한 문제를 해결하기 위해 Injectabl 라이브러리를 사용하여 의존성 주입(Dependency Injection)을 구현할 수 있습니다.

의존성 주입(Dependency Injection)

의존성 주입은 객체 간의 의존 관계를 외부에서 주입하는 디자인 패턴입니다. 이를 통해 코드의 결합도를 낮추고 재사용성과 유지 보수성을 높일 수 있습니다.

Injectable 라이브러리

Injectable은 플러터 앱에서 의존성 주입을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 이 라이브러리를 사용하면 의존성 주입을 위한 코드를 간결하게 작성할 수 있고, 런타임 시점에 의존성을 주입할 수 있습니다.

사용 방법

  1. injectable 패키지를 pubspec.yaml에 추가합니다.
dependencies:
  injectable: ^1.0.0
  1. main.dart 파일에서 setupLocator()를 호출하여 의존성 주입을 설정합니다.
void main() {
  setupLocator();
  runApp(MyApp());
}
  1. 의존성 주입이 필요한 클래스에 @injectable 어노테이션을 추가합니다.
@injectable
class UserRepository {
  // ...
}
  1. 의존성 주입이 필요한 클래스를 다른 클래스에서 사용할 때는 @inject 어노테이션을 사용합니다.
class UserBloc {
  final UserRepository userRepository;

  UserBloc(@inject this.userRepository);
}
  1. @module 어노테이션을 사용하여 의존성 주입을 설정합니다. registerModule을 사용하여 실제 의존성을 등록합니다.
@registerModule
abstract class AppModule {
  @lazySingleton
  UserRepository get userRepository => UserRepository();
}

위의 예제에서는 UserRepository를 싱글톤으로 등록하였습니다.

Injectable을 사용하여 플러터 앱의 코드 유지 보수성을 높일 수 있습니다. 의존성 주입을 통해 코드의 결합도를 낮출 뿐만 아니라, 유지 보수 및 테스트를 쉽게 할 수 있습니다. 추가로 Injectable은 코드 생성(tooling)을 지원하므로 개발 생산성을 향상시킬 수도 있습니다.

더 많은 정보를 원한다면, Injectable 문서를 참조하세요.