[flutter] Injectable을 사용하여 플러터 앱의 데이터 관리 개선하기

소개

플러터는 크로스 플랫폼 앱 개발을 위한 인기 있는 프레임워크입니다. 플러터를 사용하면 단일 코드베이스에서 iOS 및 Android 앱을 빌드할 수 있습니다. 그러나 앱의 데이터 관리는 앱을 개발할 때 매우 중요한 부분입니다. 이 문제를 해결하기 위해 “Injectable”이라는 패키지를 사용하여 플러터 앱의 데이터 관리를 개선할 수 있습니다. Injectable은 의존성 주입(Dependency Injection) 개념을 기반으로 하여 앱의 데이터 관리를 용이하게 해줍니다.

의존성 주입(Dependency Injection)이란?

의존성 주입은 객체를 생성하고 연결하는 디자인 패턴입니다. 의존성 주입을 사용하면 객체 간의 결합도를 낮출 수 있으며, 테스트 용이성, 코드 가독성, 유지 보수성을 향상시킬 수 있습니다.

Injectable 패키지 소개

Injectable 패키지는 의존성 주입을 플러터 앱에 적용하기 위한 도구입니다. 이 패키지는 주로 코드 생성을 통해 의존성 주입을 구현하며, 프로젝트의 코드를 보다 정돈하고 관리하기 쉽게 해줍니다.

사용 방법

  1. pubspec.yaml 파일에 injectable 패키지를 추가합니다.
dependencies:
  injectable: ^1.0.0
  injectable_generator: ^1.0.0
  1. injectable_generator 패키지를 사용하기 위해 build_runner 패키지도 추가합니다.
dev_dependencies:
  build_runner:
  1. 앱의 의존성을 정의하는 injectable 파일을 생성합니다. 이 파일에는 싱글톤 객체, 팩토리 메소드 등을 정의할 수 있습니다.
@module
abstract class InjectableModule {
  @singleton
  Dio get dio => Dio();
  
  @lazySingleton
  UserRepository get userRepository => UserRepository();
  
  @factoryMethod
  DatabaseProvider createDatabaseProvider() => DatabaseProvider();
}
  1. build_runner를 사용하여 코드를 생성합니다.
flutter packages pub run build_runner build
  1. 생성된 코드를 사용하여 의존성을 해결합니다.
final dio = getIt<Dio>();
final userRepository = getIt<UserRepository>();
final databaseProvider = getIt<DatabaseProvider>();

결론

Injectable 패키지를 사용하면 플러터 앱의 데이터 관리를 개선할 수 있습니다. 의존성 주입을 통해 객체 간의 결합도를 낮출 수 있으며, 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. Injectable의 강력한 기능을 활용하여 플러터 앱의 데이터 관리를 더욱 손쉽게 구현해보세요.

참고 자료