[flutter] 플러터에서 Inject와 Injectable을 이용한 앱의 확장성 개선

소개

플러터(Flutter)는 Google에서 개발한 모바일 애플리케이션 개발 프레임워크로, 효율적이고 반응형인 사용자 인터페이스를 빠르게 구축할 수 있습니다. 하지만 앱이 복잡해지고 기능이 추가될수록 유지보수와 확장성에 어려움을 겪을 수 있습니다. 이러한 문제를 해결하기 위해 의존성 주입(Dependency Injection)을 사용할 수 있습니다.

의존성 주입이란?

의존성 주입은 애플리케이션 개발에서 중요한 디자인 패턴으로, 객체 간의 의존성을 외부에서 주입하는 것을 의미합니다. 이를 통해 결합도를 낮출 수 있고, 코드의 유연성과 재사용성을 높일 수 있습니다.

Inject와 Injectable

Inject와 Injectable은 플러터에서 의존성 주입을 쉽게 구현할 수 있도록 도와주는 패키지입니다. Inject는 의존성을 주입해야하는 클래스의 필드나 메서드에 주석을 추가하고, 주입을 처리하기 위한 코드를 생성해줍니다. Injectable은 의존성 주입을 위한 모듈을 선언하고, 필요한 객체를 생성해주는 역할을 합니다.

사용 방법

  1. Inject 패키지를 추가합니다.
dependencies:
  inject: ^4.3.1
  1. Injectable을 사용할 클래스에 @injectable 주석을 추가합니다.
@injectable
class ExampleService {
  ...
}
  1. 의존성을 주입받아야 하는 클래스의 필드나 메서드에 @inject 주석을 추가합니다.
@injectable
class ExampleViewModel {
  ExampleService _service;

  @inject
  set service(ExampleService service) => _service = service;

  ...
}
  1. main.dart 파일에서 void main() 함수에 configureInjection()을 추가하여 주입 설정을 초기화합니다.
void main() {
  configureInjection();
  runApp(MyApp());
}

주의 사항

결론

Inject와 Injectable을 사용하여 플러터 앱의 확장성을 개선할 수 있습니다. 의존성 주입을 통해 코드의 결합도를 낮출 수 있고, 유연성과 재사용성을 높일 수 있습니다. 의존성 주입은 플러터 앱의 복잡성과 유지보수에 도움이 되며, 효율적인 개발을 할 수 있도록 도와줍니다.

참고 자료