앱 개발 중에는 다양한 레이어 간의 코드 재사용성과 유지 보수성을 높이기 위해 의존성 주입(Dependency Injection)이 필요하다. Flutter에서는 이를 쉽게 처리하기 위해 get_it 패키지를 사용할 수 있다.
get_it은 의존성 주입을 위한 간단하고 가벼운 패키지로, 상위 수준의 서비스를 레지스트리에 등록하고 이를 하위 수준의 구성 요소에서 쉽게 사용할 수 있도록 도와준다. 아래는 get_it를 사용하여 앱의 다양한 레이어 간의 의존성 주입을 처리하는 예시 코드이다.
get_it 패키지 설치하기
get_it 패키지를 사용하기 위해 먼저 pubspec.yaml
파일에 해당 패키지를 추가해야 한다. 예를 들어, dependencies
섹션에 다음과 같이 추가할 수 있다.
dependencies:
get_it: ^4.0.4
이후 터미널에서 flutter packages get
명령어를 실행하여 패키지를 설치한다.
의존성 주입 처리하기
의존성 주입을 처리하기 위해 먼저 앱의 상위 수준에서 사용되는 서비스를 get_it의 레지스트리에 등록해야 한다. 예를 들어, ApiService
라는 서비스를 등록한다고 가정해보자.
import 'package:get_it/get_it.dart';
GetIt locator = GetIt.instance;
void setupLocator() {
locator.registerLazySingleton(() => ApiService());
}
위 예시에서 registerLazySingleton
은 API 서비스를 앱에서 단일 인스턴스로 사용하는 것을 의미한다. 만약 매번 새로운 인스턴스를 생성하고 싶다면 registerFactory
를 사용할 수 있다.
이제 의존성 주입이 필요한 하위 수준의 구성 요소에서 get_it을 사용해 앱의 서비스를 가져올 수 있다. 예를 들어, HomePage
위젯에서 ApiService
를 사용하고 싶다면 다음과 같이 처리할 수 있다.
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
class HomePage extends StatelessWidget {
final ApiService apiService = GetIt.instance<ApiService>();
@override
Widget build(BuildContext context) {
// ApiService를 사용하는 코드 작성
}
}
위 코드에서 GetIt.instance<ApiService>()
를 사용하여 get_it 레지스트리에서 ApiService 인스턴스를 가져오고 있다. 이제 HomePage
위젯에서 ApiService를 사용할 수 있다.
결론
get_it를 사용하여 Flutter 앱의 다양한 레이어 간의 의존성 주입을 처리하는 방법을 살펴보았다. get_it은 간단하고 가벼운 패키지로, 의존성 주입을 효과적으로 처리할 수 있다. 앱 개발에서 의존성 주입이 필요한 경우, get_it 패키지를 고려해보는 것을 추천한다.