[flutter] Injectable을 사용하여 플러터 앱의 비즈니스 로직 분리하기

플러터는 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은 앱을 더욱 효율적으로 관리할 수 있도록 도와줍니다. 추가적인 정보는 공식 문서를 참조해 주세요.