#3-1 GetX - 종속성관리 : 인스턴스 메서드

2022. 1. 21. 12:21Flutter

반응형

 

GetX를 통해 사용 중인 클래스에서 클래스를 인스턴스화하는 대신 Get 인스턴스 내에서 인스턴스화하여 앱 전체에서 사용할 수 있다.

 

이 전 포스팅까지는 controller를 만들면 controller를 쓸 page 내부에서 Get.put()을 통해 인스턴스화를 했었다.

인스턴스화를 시키는 메서드에는 4가지가 있다.

📢Get.put()

            ElevatedButton(
              onPressed: () {
                Get.to(
                  () => ReactiveStateManager(),
                  binding: BindingsBuilder(
                    () {
                      Get.put(ReactiveController());
                    },
                  ),
                );
              },
              child: Text(
                "반응형 상태관리",
                style: TextStyle(
                  fontSize: 20,
                ),
              ),
            )

이제까지 쓰던 Get.put()이다. 이 메서드를 사용하면 페이지가 넘어감과 동시에 인스턴스가 자동으로 생성된다.

binding을 통해 인스턴스를 전달해줄 수 있다.

 

콘솔을 확인해보면 ReactiveStateManager 페이지에 들어감과 동시에 ReactiveController가 생기고 페이지를 나오면서 메모리에서 삭제되는 것을 볼 수 있다.

📢Get.lazyPut()

            ElevatedButton(
              onPressed: () {
                Get.to(
                  () => ReactiveStateManager(),
                  binding: BindingsBuilder(
                    () {
                      Get.lazyPut<ReactiveController>(
                          () => ReactiveController());
                    },
                  ),
                );
              },
              child: Text(
                "반응형 상태관리",
                style: TextStyle(
                  fontSize: 20,
                ),
              ),
            )

Get.put()은 페이지가 넘어가자 마자 인스턴스를 만들지만, Get.lazyPut()은 페이지가 넘어가도 인스턴스를 바로 만들지 않는다. 

lazyPut()에서의 인스턴스는 인스턴스를 사용할 때 생성되게 된다. 즉 넘겨준 페이지에서 Get.find()를 하게 되면 생성되는 것이다. 

📢Get.putAsync()

📢Get.create()

이 두 메서드는 잘 사용하지 않는다고 한다.

 

 


Get.put() 설정 중 permanent라는게 있다.

기본적으로 GetX는 사용하지 않을때 인스턴스를 삭제하는데 그렇게 되면 바뀐 정보가 사라지게 된다.

permanent속성을 true로 주게 되면 컨트롤러가 화면이 바뀌는 동안 사라지지 않는다. 즉, 전체 어플리케이션이 실행되는 동안 계속 유지하려고 하는 서비스에 매우 유용하다.

 

 

 

반응형