[flutter] 플러터에서 Inject와 Injectable을 이용한 앱의 확장성 개선
소개
플러터(Flutter)는 Google에서 개발한 모바일 애플리케이션 개발 프레임워크로, 효율적이고 반응형인 사용자 인터페이스를 빠르게 구축할 수 있습니다. 하지만 앱이 복잡해지고 기능이 추가될수록 유지보수와 확장성에 어려움을 겪을 수 있습니다. 이러한 문제를 해결하기 위해 의존성 주입(Dependency Injection)을 사용할 수 있습니다.
의존성 주입이란?
의존성 주입은 애플리케이션 개발에서 중요한 디자인 패턴으로, 객체 간의 의존성을 외부에서 주입하는 것을 의미합니다. 이를 통해 결합도를 낮출 수 있고, 코드의 유연성과 재사용성을 높일 수 있습니다.
Inject와 Injectable
Inject와 Injectable은 플러터에서 의존성 주입을 쉽게 구현할 수 있도록 도와주는 패키지입니다. Inject는 의존성을 주입해야하는 클래스의 필드나 메서드에 주석을 추가하고, 주입을 처리하기 위한 코드를 생성해줍니다. Injectable은 의존성 주입을 위한 모듈을 선언하고, 필요한 객체를 생성해주는 역할을 합니다.
사용 방법
- Inject 패키지를 추가합니다.
dependencies:
inject: ^4.3.1
- Injectable을 사용할 클래스에
@injectable
주석을 추가합니다.
@injectable
class ExampleService {
...
}
- 의존성을 주입받아야 하는 클래스의 필드나 메서드에
@inject
주석을 추가합니다.
@injectable
class ExampleViewModel {
ExampleService _service;
@inject
set service(ExampleService service) => _service = service;
...
}
- main.dart 파일에서
void main()
함수에configureInjection()
을 추가하여 주입 설정을 초기화합니다.
void main() {
configureInjection();
runApp(MyApp());
}
주의 사항
@injectable
주석이 추가된 클래스는 반드시 생성자를 가져야합니다. 생성자의 매개변수로 주입할 의존성을 선언해야 합니다.- 의존성 주입은 객체를 생성하기 전에 가능한 일차적으로 수행되어야 합니다. 가능한 이른 시점에서 주입 설정을 초기화하는 것이 좋습니다.
결론
Inject와 Injectable을 사용하여 플러터 앱의 확장성을 개선할 수 있습니다. 의존성 주입을 통해 코드의 결합도를 낮출 수 있고, 유연성과 재사용성을 높일 수 있습니다. 의존성 주입은 플러터 앱의 복잡성과 유지보수에 도움이 되며, 효율적인 개발을 할 수 있도록 도와줍니다.