[flutter] 플러터에서 Injectable을 사용하여 의존성 주입 변경하기
의존성 주입(Dependency Injection)은 애플리케이션에서 객체 간의 의존성을 해결하는 방법입니다. 플러터에서는 여러 가지 의존성 주입 패턴 중 하나인 Injectable을 사용하여 의존성 주입을 쉽게 변경할 수 있습니다.
Injectable 패키지 설치
먼저, 프로젝트에 injectable
패키지를 설치해야 합니다. pubspec.yaml
파일에 아래의 의존성을 추가하세요.
dependencies:
injectable: ^1.3.0
의존성을 추가한 후, 패키지를 가져오기 위해 터미널에서 flutter pub get
명령을 실행하세요.
의존성 주입 설정하기
- main.dart 파일에
setupInjection()
함수를 추가해주세요.
import 'package:injectable/injectable.dart';
void main() {
configureInjection(Environment.prod);
runApp(MyApp());
}
- 프로젝트의 루트 디렉터리에
injection.dart
파일을 생성해주세요. 이 파일은 의존성 주입을 설정하는 곳입니다.
import 'package:injectable/injectable.dart';
@module
abstract class InjectableModule {
// 여기에 주입할 의존성을 정의하세요.
}
- 의존성 주입할 클래스에
@injectable
어노테이션을 추가하세요.
@injectable
class UserRepository {
// ...
}
의존성 주입 사용하기
- 사용할 클래스에서 의존성을 주입받을 변수를 선언합니다.
@injectable
class UserService {
UserRepository _userRepository;
UserService(this._userRepository);
}
- 사용할 클래스를
@Injectable()
어노테이션으로 주입받아 사용합니다.
@injectable
class MyApp extends StatelessWidget {
final UserService _userService;
const MyApp(this._userService, {Key? key}) : super(key: key);
// ...
}
의존성 주입 변경하기
injection.dart
파일에서 의존성을 변경하고 싶다면, 해당 클래스의 구현체를 수정하거나 새로운 클래스를 추가하세요.
@injectable
class MockUserRepository implements UserRepository {
// ...
}
injection.dart
파일에서 의존성을 변경해주세요.
import 'package:injectable/injectable.dart';
@module
abstract class InjectableModule {
// 주입할 의존성을 변경하세요.
@lazySingleton
UserRepository get userRepository => MockUserRepository();
}
이제 플러터에서 Injectable 패키지를 사용하여 의존성 주입을 쉽게 변경할 수 있습니다. 의존성 주입을 효율적으로 관리하여 코드의 유지 보수성과 테스트 가능성을 높이세요.