[flutter] #3-1 Getx - 종속성 관리 : 인스턴스 넘겨주기

giyeon·2021년 5월 12일
2

flutter-getx

목록 보기
7/8
post-thumbnail

이 프로젝트는 Youtube '개발하는남자'의 'GetX 주요 기능 3가지 중 그 첫번째 Route 관리 #2' 강의를 참고했습니다.


Controller 인스턴스화 해주는 여러가지 방법

Getx를 이용해서 controller를 만들면
그 controller가 필요한 곳에서는 controller의 인스턴스가 필요해요.
(메모리에 올리는 작업)

저번 포스팅까지는 controller가 쓰이는 Page 내부에서 Get.put()을 활용하여 인스턴스화를 했었어요.

 //예시
 Get.put(CountControllerWithGetx());

하지만 이 방법만 있는건 아니에요.

A page => B page
A page 에서 B page 로 넘어가는 동시에 controller를 전달해 줄 수 있어요.
B page에서 따로 인스턴스를 만들어주지 않아도 되는거에요!

이런식으로 인스턴스를 전달해주는
총 네가지의 방법이 있어요.

그 중에서 가장 보편적으로 사용하는 두 가지 Get.put, Get.lazyPut을 보도록 할게요.

Get.put()

페이지가 넘어감과 동시에 인스턴스가 자동으로 생성돼요.
binding 을 통해 라우트 단계에서 인스턴스를 전달해줄 수 있어요.

            RaisedButton(
              child: Text('Get put'),
              onPressed: () {
                //바인딩은 페이지를 전환하면서 사용할 컨트롤러를 보내주는 방법입니다.
                //이동되는 페이지 내에서 Get.put 을 하는 대신, 페이지를 이동하기 전에 Get.put() 을 해주는 방법입니다.
                Get.to(GetPutPage(), binding: BindingsBuilder(() {
                  Get.put(DependencyController());
                }));
              },
            ),

라우팅을 하면서 인스턴스를 넘겨주기 때문에 목적지 페이지(GetPutPage)에서는 따로 인스턴스화를 해주지 않아도 돼요.

(바인딩으로 Get.put()을 해주면 페이지가 넘어가면서 아래와 같은 로그가 떠요.)



Get.lazyPut()

Get.lazyPut() 은 Get.put과 비슷한 방식으로 쓰이긴해요.
하지만 확실히 달라요.

            RaisedButton(
              child: Text('Get.lazyPut'),
              onPressed: () {
                Get.to(LazyPutPage(), binding: BindingsBuilder(() {
                  Get.lazyPut<DependencyController>(
                      () => DependencyController());
                }));
              },
            ),

Get.put()은 페이지가 넘어감과 동시에 인스턴스를 만들어버리지만
Get.lazyPut() 은 페이지가 넘어가도 인스턴스를 곧바로 만들지 않아요.

(Get.lazyPut()으로 Page가 전환이 되면 아래와 같은 로그가 떠요.)

그럼 인스턴스는 언제 생성될까요!

인스턴스를 사용할 때 !

생성돼요.

이전 페이지에서 Controller 를 lazy로 넘겨주면,
Get.find() 가 실행이 될 때 인스턴스가 생성되는 거에요.
(increase()는 아무거나 만든 method 입니다.)

      RaisedButton(
        onPressed: () {
          Get.find<DependencyController>().increase();
        },
      ),

(아래 로그는 버튼을 눌렀을 때(Get.find()가 실행될 때) 찍히는 로그입니다.)


이 외 두 가지는 별로 쓰일일이 없다해서..
실무에서 한 번이라도 쓰인다면 추가로 업데이트 할 생각이에요 ㅋㅋㅋ...
여기까지 인스턴스 던져주기 ! 를 알아봤습니다. 🙌

profile
Web , App developer wannabe 🧑🏻‍💻

0개의 댓글