의존성 주입은 앱 개발에서 중요한 부분입니다. 이를 효과적으로 처리하기 위해서는 관리하기 쉬운 코드 구조와 의존성 주입을 자동으로 처리하는 메커니즘이 필요합니다. Flutter에서는 이를 위해 Injectabe 패키지를 사용할 수 있습니다.
1. Injectable 패키지 추가하기
먼저, 프로젝트에 injectable
패키지를 추가해야 합니다. pubspec.yaml
파일에 다음과 같이 injectable
패키지를 추가합니다:
dependencies:
injectable: ^1.1.0
그리고 패키지를 업데이트합니다:
$ flutter packages get
2. Injectable 설정하기
다음으로, injectable
패키지를 사용하기 위해 앱의 주 시작 파일인 main.dart
에 다음과 같이 설정합니다:
import 'package:injectable/injectable.dart';
import 'injection.dart' as di;
void main() {
configureInjection(di.injectableModule);
runApp(MyApp());
}
위 코드에서는 injection.dart
파일에 정의된 injectableModule
을 사용하여 주입을 설정합니다.
3. 의존성 주입 정의하기
injection.dart
파일을 생성하고 의존성 주입을 정의합니다. 예를 들어, 다음과 같이 @injectable
어노테이션을 사용하여 의존성을 주입할 수 있습니다:
import 'package:injectable/injectable.dart';
@module
abstract class InjectableModule {
@lazySingleton
UserRepository get userRepository => UserRepositoryImpl();
}
위 코드에서는 UserRepository
를 UserRepositoryImpl
로 주입합니다. @lazySingleton
어노테이션은 의존성을 한 번만 생성하고 재사용한다는 의미입니다.
4. 의존성 주입 사용하기
이제 의존성 주입을 사용할 수 있습니다. 예를 들어, 위에서 정의한 UserRepository
를 사용하는 UserBloc
을 만들어 보겠습니다:
import 'package:injectable/injectable.dart';
@injectable
class UserBloc {
final UserRepository _userRepository;
UserBloc(this._userRepository);
// ...
}
위 코드에서는 @injectable
어노테이션을 사용하여 UserBloc
가 의존성 주입을 받을 것임을 명시합니다. _userRepository
는 의존성 주입으로 자동으로 주입됩니다.
이렇게 설정하면 UserBloc
을 사용하는 모든 곳에서 자동으로 의존성 주입이 처리됩니다.
마무리
Flutter에서 injectable 패키지를 사용하여 의존성 주입을 처리하는 방법을 알아보았습니다. 이를 사용하면 코드를 더욱 관리하기 쉽고 재사용성이 높은 앱을 개발할 수 있습니다. 자세한 내용은 injectable의 공식 문서를 참고하시기 바랍니다.