[flutter] 플러터에서 Injectable을 사용한 애플리케이션 개발 방법
이번 블로그 포스트에서는 플러터(Flutter) 애플리케이션 개발에서 Injectable을 사용하는 방법에 대해 알아보겠습니다. Injectable은 의존성 주입(Dependency Injection)을 편리하게 사용할 수 있게 도와주는 라이브러리입니다.
의존성 주입(Dependency Injection)이란?
의존성 주입은 소프트웨어 디자인 패턴 중 하나로, 객체 간의 의존 관계를 외부에서 관리하고 주입하는 방식을 말합니다. 의존성 주입을 사용하면 코드 일부분의 의존성을 변경하는 것이 쉽고, 모듈성과 재사용성이 높은 코드를 작성할 수 있습니다.
플러터에서 Injectable 사용하기
Injectable을 플러터 프로젝트에서 사용하기 위해서는 다음 단계를 따르면 됩니다.
pubspec.yaml
파일에injectable_generator
와injectable
의존성을 추가합니다.dev_dependencies: injectable_generator: ^1.0.0 injectable: ^1.0.0
-
main.dart
파일에서import 'package:injectable/injectable.dart';
을 추가합니다. main()
함수 앞에@injectable
어노테이션을 추가합니다.@injectable void main() { runApp(MyApp()); }
- 의존성 주입할 객체들을 정의합니다. 예를 들어,
MyService
를 주입 가능한 객체로 만들기 위해@injectable
어노테이션을 추가합니다.@injectable class MyService { // ... }
@module
어노테이션을 추가하여 의존성 주입할 객체들의 모듈을 선언합니다. 예를 들어,ServiceModule
이라는 모듈을 생성하여MyService
를 포함시킬 수 있습니다.@module abstract class ServiceModule { @lazySingleton MyService get myService => MyService(); }
injectable
패키지에서 생성된 코드를 실행하여 의존성 주입을 초기화합니다. 터미널에서flutter packages pub run build_runner build
명령어를 실행합니다.
이제 플러터 애플리케이션에서 MyService
를 필요로 하는 클래스에서 @inject
어노테이션을 사용하여 의존성을 주입받을 수 있습니다.
@Injectable()
class MyWidget extends StatelessWidget {
final MyService _myService;
MyWidget(this._myService);
// ...
}
이렇게 하면 MyWidget
클래스에서 _myService
의존성을 주입받을 수 있습니다.
Injectable을 사용하면 플러터 애플리케이션의 의존성 주입을 더욱 쉽고 편리하게 관리할 수 있습니다. 상황에 맞게 의존성 주입을 적용하여 코드의 모듈성과 유연성을 높일 수 있습니다.
더 자세한 내용과 사용 예제는 Injectable 패키지의 공식 문서를 참고하시기 바랍니다.