소개
플러터(Flutter)는 구글에서 개발한 사용자 인터페이스(UI) 프레임워크로, 여러 플랫폼에서 동작하는 앱을 개발할 수 있습니다. 하지만 대규모 앱을 개발할 때, 데이터 구조의 관리가 복잡해질 수 있습니다. 이러한 문제를 해결하기 위해 injectable
패키지를 사용하여 플러터 앱의 데이터 구조를 개선해보겠습니다.
injectable 패키지란?
injectable
은 플러터 앱에서 의존성 주입(Dependency Injection)을 보다 간편하게 구현할 수 있도록 도와주는 패키지입니다. 의존성 주입은 클래스 간의 의존 관계를 유연하게 관리하는 디자인 패턴으로, 앱 내의 객체들 간의 결합도를 낮추고 유지보수성을 높일 수 있습니다.
데이터 구조 개선을 위한 injectable 사용하기
-
injectable
패키지 추가하기플러터 프로젝트의
pubspec.yaml
파일에injectable
패키지를 추가해줍니다.dependencies: injectable: ^1.0.0
-
injectable
초기화하기main.dart
파일에서injectable
을 초기화합니다. 이를 위해,setupLocator()
함수를 호출해줍니다.import 'package:injectable/injectable.dart'; import 'package:your_project_name/injection.dart'; void main() { configureInjection(Environment.prod); runApp(MyApp()); }
-
의존성 주입을 위한 클래스 생성하기
injectable
을 사용하려는 클래스에는@injectable
어노테이션을 추가해야합니다. 이를 통해 해당 클래스를 의존성 주입이 가능한 클래스로 만들어줍니다.@injectable class UserRepository { // ... }
-
의존성 주입하기
의존성을 주입받고자 하는 클래스에서
@injectable
어노테이션 위에@Singleton()
어노테이션을 추가해주고, 해당 클래스를 생성자로 주입받아 사용합니다.@injectable @Singleton() class UserService { final UserRepository _userRepository; UserService(this._userRepository); // ... }
-
의존성 주입된 객체 사용하기
의존성 주입이 완료된 객체는
getIt
을 통해 사용할 수 있습니다. 이를 위해injection.dart
파일을 생성하고, 다음과 같이getIt
을 초기화해줍니다.final getIt = GetIt.instance; @injectableInit void configureInjection(String environment) { $initGetIt(getIt, environment: environment); }
그 후에, 의존성 주입이 끝난 객체를
getIt
을 통해 사용합니다.final userRepository = getIt<UserRepository>(); final userService = getIt<UserService>();
결론
injectable
패키지를 사용하여 플러터 앱의 데이터 구조를 개선하면, 의존성 주입을 간편하게 구현할 수 있고, 앱의 유지보수성을 향상시킬 수 있습니다. injectable
을 사용하여 플러터 앱을 개발할 때, 의존성 주입을 적절히 활용하여 효율적인 데이터 관리를 실현해보세요.
참고 문서: