[flutter] Injectable 클래스의 라이프사이클

Injectable 클래스는 Flutter 앱에서 의존성 주입을 지원하기 위해 사용되는 클래스입니다. 이 클래스는 앱의 라이프사이클에 따라 생성되고 소멸됩니다. 이번 글에서는 Injectable 클래스의 라이프사이클에 대해 알아보겠습니다.

Injectable 클래스의 생성

Injectable 클래스는 주로 앱이 시작되고 종료될 때 생성하고 소멸시킵니다. 이는 주로 앱의 main 함수와 함께 사용됩니다. 다음은 Injectable 클래스의 생성 예시입니다.

@LazySingleton(as: MyService)
class MyServiceImpl extends MyService {}

void main() {
  configureInjection(Environment.prod);
  runApp(MyApp());
}

위 예시에서 MyServiceImplMyService 인터페이스의 구현체로, 앱의 전체 라이프사이클 동안 생성 및 소멸됩니다. configureInjection 함수는 앱의 주입 설정을 초기화하는 역할을 합니다.

주입된 객체의 생명주기 관리

Injectable 클래스는 일반적으로 주입되는 객체의 생명주기와 동일한 방식으로 관리됩니다. 다음은 몇 가지 주입된 객체의 예시입니다.

주입된 객체 사용 예시

주입된 객체를 사용하기 위해서는 해당 객체의 인스턴스를 참조할 수 있어야 합니다. 이를 위해 lazySingleton 함수를 사용해 주입된 객체를 가져올 수 있습니다. 다음은 주입된 객체를 사용하는 예시입니다.

class MyApp extends StatelessWidget {
  final MyService myService = getIt<MyService>();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: RaisedButton(
            onPressed: () {
              myService.doSomething();
            },
            child: Text('Click me'),
          ),
        ),
      ),
    );
  }
}

위 예시에서 getIt<MyService>() 함수를 호출하여 MyService 인스턴스를 가져옵니다. 이후에는 해당 인스턴스를 사용하여 원하는 작업을 수행할 수 있습니다.

결론

Injectable 클래스는 Flutter 앱에서 의존성 주입을 간편하게 처리할 수 있도록 도와줍니다. 클래스의 생성 및 소멸은 앱의 라이프사이클에 맞춰 관리되며, 주입된 객체의 생명주기를 세밀하게 제어할 수 있습니다. 이를 통해 앱의 유연성과 가독성을 향상시킬 수 있습니다.

자세한 내용은 Injectable GitHub 페이지를 참고하십시오.