[flutter] get_it를 사용하여 인터페이스에 대한 의존성을 주입하는 방법은?

의존성 주입은 소프트웨어 개발에서 중요한 개념 중 하나입니다. Flutter 애플리케이션을 개발할 때 의존성 주입을 쉽게 구현할 수 있는 패키지 중 하나는 get_it입니다. get_it을 사용하면 애플리케이션에 인터페이스에 대한 의존성을 주입할 수 있습니다.

이를 위해 아래의 단계를 따라주세요.

단계 1: get_it 패키지 추가하기

먼저, pubspec.yaml 파일을 열고 의존성에 get_it 패키지를 추가합니다. 다음과 같은 코드를 dependencies 섹션에 추가합니다.

dependencies:
  get_it: ^7.1.3

의존성을 추가한 후, 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

단계 2: 주입할 인터페이스 선언하기

의존성을 주입할 인터페이스를 선언합니다. 이 예시에서는 AuthService 인터페이스를 사용하겠습니다.

abstract class AuthService {
  Future<void> login(String username, String password);
  // 다른 메서드들을 추가할 수 있습니다.
}

단계 3: 구현 클래스 작성하기

인터페이스를 구현하는 클래스를 작성합니다. 이 예제에서는 AuthServiceImpl 클래스를 구현하고 AuthService를 상속받습니다.

class AuthServiceImpl implements AuthService {
  @override
  Future<void> login(String username, String password) {
    // 로그인 로직을 작성합니다.
  }
}

단계 4: get_it을 사용하여 의존성 주입하기

의존성을 주입하기 위해 get_it을 사용합니다. 애플리케이션의 상위 수준에서 GetIt 인스턴스를 생성하고 인터페이스와 구현 클래스를 등록합니다.

import 'package:get_it/get_it.dart';

void main() {
  // GetIt 인스턴스 생성
  GetIt locator = GetIt.instance;

  // 인터페이스와 구현 클래스 등록
  locator.registerLazySingleton<AuthService>(() => AuthServiceImpl());

  // 애플리케이션 실행
  runApp(MyApp());
}

이제 AuthService 인터페이스를 사용하여 의존성을 주입할 수 있습니다.

class LoginScreen extends StatelessWidget {
  final AuthService authService = GetIt.I<AuthService>();

  @override
  Widget build(BuildContext context) {
    return RaisedButton(
      onPressed: () {
        authService.login('username', 'password');
      },
      child: Text('Login'),
    );
  }
}

위의 예시에서는 GetIt.I 메서드를 사용하여 AuthService 인터페이스에 대한 의존성을 주입하였습니다.

이렇게하면 get_it을 사용하여 인터페이스에 대한 의존성을 주입할 수 있습니다. get_it은 의존성 관리를 쉽게 해주는 강력한 도구입니다. 추가적인 사용법에 대해 get_it 공식 문서를 참조하시길 바랍니다.

참고 자료