https://www.youtube.com/watch?v=9_lJrJ0yVbg
코딩셰프님이 위 영상에서 3분 50초 쯤에 의존성 주입에 대해 얘기을 한다. "무슨 거창한 용어 같지만 단순히 Controller 클래스 내부에 있는 프로퍼티와 메소드 접근을 위해서 Controller 인스턴스를 생성하는 것이다."라고 하셨지만 나는 좀 더 깊게 이해하고 싶었다.
https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/
의존관계 주입(Dependency Injection) 쉽게 이해하기
이번 글에서는 DI(의존성 주입, 의존관계 주입)의 개념을 설명한다. DI란 용어가 주는 위압감과 부담감 때문에 이해를 미뤄뒀거나, 처음 접하는 분들이 쉽게 이해할 수 있도록 쉽게 설명하고자 한
tecoble.techcourse.co.kr
그래서 조사를 해보았고 이 블로그 글이 간단하고 핵심을 이해할 수 있어서 좋았다. 읽고 의존성과 의존성 주입 그리고 의존성 주입을 사용함으로써 얻는 이점을 정리해보자.
강의에 나온 코드의 이상한 점
위 build 함수를 보면 build 함수 첫줄에서 Controller를 생성하고, GetBuilder 위젯에서 controller의 x 프로퍼티를 사용하고 있는 것을 볼 수 있다.
그런데 의존성 주입은 Controller를 클래스 외부에서 생성해서 받아와야 한다. 근데 저 코드는 클래스 내부에서 Controller를 생성하고 있다. 그래서 나중에 다른 컨트롤러를 사용하고 싶을 때, 예를 들면 ControllerAction이라는 컨트롤러를 사용하려면, 지금 보이는 VIEW코드를 Get.put(Controller()) => Get.put(ControllerAction()) 처럼 다 바꿔줘야만 한다.
의존성 주입을 사용하면 업 캐스팅으로 인스턴스를 받아온 후, 다운 캐스팅하여 사용하기만 하면 된다.
https://medium.com/flutter-community/the-flutter-getx-ecosystem-dependency-injection-8e763d0ec6b9
The Flutter GetX Ecosystem ~ Dependency Injection
The ease and level of control offered by GetX Dependency Management system makes it something worth giving a shot.
medium.com
2번째 강의를 들으면서 자료를 다시 찾아보니 위에서 한 내 추측이 틀렸다. Get.put(Controller())로 의존성 주입을 하는 것이였다! Get.put() 함수로 메모리에 의존성 주입을 하면 다른 페이지(클래스)에서는 Controller를 생성할 필요없이 사용할 수 있다. GetX 패키지 편리하네.
'Flutter' 카테고리의 다른 글
flutter 앱을 플레이스토어에 출시해보았다 (1) | 2024.04.18 |
---|---|
Gradle Build Running 중 안드로이드 스튜디오가 멈추는 현상 해결 (0) | 2021.07.31 |
02. Dart 언어를 13분 정도 배워보았다. (0) | 2021.04.28 |
01. 플러터 앱 실행을 성공했다!!! (0) | 2021.04.21 |