플러터는 Google에서 개발한 UI 프레임워크로, 단일 코드베이스에서 iOS와 Android 앱을 모두 개발할 수 있습니다. 하지만 앱의 규모가 커지고 복잡해질수록, 비즈니스 로직을 효율적으로 관리하는 것이 중요해집니다. 이번 포스트에서는 injectable
을 사용하여 플러터 앱의 비즈니스 로직을 분리하는 방법에 대해 살펴보겠습니다.
1. injectable이란?
injectable
은 플러터 앱에서 종속성 주입(Dependency Injection)을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 종속성 주입은 앱의 각 부분을 느슨하게 결합시켜 수정이나 유지보수를 용이하게 만들어 주는 디자인 패턴입니다. injectable
은 이러한 종속성 주입을 플러터 앱에서 쉽게 구현할 수 있도록 해줍니다.
2. injectable 설치하기
먼저 injectable
을 설치해야 합니다. pubspec.yaml
파일에 다음과 같이 injectable
을 추가해 줍니다:
dependencies:
injectable: ^1.0.0
injectable_generator: ^1.0.0
그런 다음, 종속성을 업데이트하기 위해 터미널에서 다음 명령어를 실행합니다:
flutter pub get
3. injectable 사용하기
injectable
을 사용하여 비즈니스 로직을 분리하기 위한 세 가지 단계가 있습니다.
3.1. 클래스에 @injectable
어노테이션 추가하기
비즈니스 로직 클래스에 @injectable
어노테이션을 추가해야 합니다. 예를 들어, 다음과 같이 UserService
클래스에 @injectable
어노테이션을 추가할 수 있습니다:
import 'package:injectable/injectable.dart';
@injectable
class UserService {
//...
}
3.2. 모듈 생성하기
injectable
은 각각의 종속성을 관리하는 모듈을 생성합니다. 모듈을 생성하기 위해 어노테이션을 추가해야 합니다. 예를 들어, @module
어노테이션을 사용하여 app_module.dart
파일을 생성할 수 있습니다:
import 'package:injectable/injectable.dart';
@Module()
abstract class AppModule {}
3.3. 모듈 등록하기
마지막으로, 앱의 모든 모듈을 등록해야 합니다. @injectable
어노테이션이 추가된 비즈니스 로직 클래스를 모두 등록해야 합니다. AppModule
클래스에 @injectable
어노테이션을 추가하고, @singleton
어노테이션을 사용하여 싱글톤으로 등록할 수 있습니다:
import 'package:injectable/injectable.dart';
@Module()
abstract class AppModule {
@singleton
UserService get userService;
}
이제 AppModule
을 사용하여 종속성을 주입할 수 있습니다:
final getit = GetIt.instance;
void setupDependencyInjection() {
getit.registerModule(AppModule());
}
4. 주입된 종속성 사용하기
이제 주입된 종속성을 사용하여 비즈니스 로직을 호출할 수 있습니다. 예를 들어, UserService
를 주입하고 로그인 기능을 호출하는 코드는 다음과 같습니다:
final userService = getit<UserService>();
void login() {
userService.login();
}
injectable
을 사용하여 플러터 앱의 비즈니스 로직을 분리하는 방법에 대해 알아보았습니다. injectable
은 앱을 더욱 효율적으로 관리할 수 있도록 도와줍니다. 추가적인 정보는 공식 문서를 참조해 주세요.