[flutter] 플러터에서 의존성 주입(Dependency Injection)을 사용하는 방법

의존성 주입(Dependency Injection)은 안드로이드 앱 개발에서 매우 유용한 개념이다. 이를 통해 앱의 컴포넌트들 간에 데이터나 서비스 객체를 주입하여 의존성을 해결할 수 있다. 이번 포스트에서는 플러터(Flutter)에서 의존성 주입을 사용하는 방법을 알아보겠다.

1. 의존성 주입(Dependency Injection) 라이브러리 선택하기

플러터에서는 다양한 의존성 주입 라이브러리가 존재한다. 가장 인기 있는 라이브러리로는 get_itinjector가 있다. 각 라이브러리에는 고유한 기능과 개념이 있으므로, 프로젝트에 맞는 라이브러리를 선택해야 한다.

2. 라이브러리 설치하기

선택한 의존성 주입 라이브러리를 플러터 프로젝트에 설치해야 한다. pubspec.yaml 파일을 열고 dependencies 섹션에 선택한 라이브러리를 추가한다.

예를 들어, get_it 라이브러리를 사용한다면 다음과 같이 추가해야 한다.

dependencies:
  get_it: ^7.0.0

변경사항을 적용하기 위해 터미널에서 flutter packages get 명령을 실행한다.

3. 의존성 주입 설정하기

의존성 주입 라이브러리를 설정하여 사용하기 위해 애플리케이션의 시작 지점인 main.dart 파일을 수정해야 한다. main() 함수가 있는 파일을 열고, 다음과 같이 코드를 추가해보자.

import 'package:get_it/get_it.dart';

GetIt locator = GetIt.instance;

void main() {
  setupInjection();
  runApp(MyApp());
}

void setupInjection() {
  locator.registerSingleton<MyService>(MyService());
}

위 코드에서 GetIt의 인스턴스인 locator를 생성하여 의존성 주입을 위한 컨테이너로 사용한다. 그리고 setupInjection() 함수를 통해 원하는 서비스 또는 데이터 객체를 등록할 수 있다. registerSingleton() 메서드를 사용하여 MyService 클래스의 인스턴스를 등록하는 예제를 보여주었다.

4. 의존성 주입 사용하기

이제 의존성 주입을 설정했으므로, 앱의 다른 부분에서 해당 객체를 사용할 수 있다. 원하는 위치에서 GetIt의 인스턴스를 가져와 객체를 사용할 수 있다.

final myService = GetIt.instance.get<MyService>();

위 코드에서 GetIt의 인스턴스인 locator를 통해 get() 메서드를 호출하여 등록한 객체를 가져올 수 있다. 이제 myService 객체를 사용하여 해당 서비스를 호출할 수 있다.

5. 추가 자료

의존성 주입(Dependency Injection)에 대해 더 많은 자료를 원한다면 다음 문서를 참고하길 바란다.

의존성 주입은 앱의 구조와 유지보수성을 향상시키는 강력한 도구이다. 플러터에서 의존성 주입을 통해 앱을 개발하면 보다 모듈화된 코드를 작성할 수 있고, 테스트하기 쉬운 앱을 만들 수 있다.