[GetX機能整理]3.レスポンスステータス管理


インスタンス宣言

@override
Widget build(BuildContext context){
	Get.put(CountReactiveGetx());
    return Scaffold(
      body: Column(
        children:[
        	//첫번째 방법
        	Getx(builder:(_){
            	return Text("%{Get.find<CountReactiveGetx>().count.value}")
            }),
            
            //두번째 방법 => 둘 중 하나 사용하기
        	Obx(() => Text(
        		"%{Get.find<CountReactiveGetx>().count.value}")),
                
          	RaisedButton(
          		child:Text("+"),
          		onPressed:(){
          			Get.find<CountReactvieGetx>().increase();
          		}
          	),
            
           RaisedButton(
          		child:Text("5로 변경하기"),
          		onPressed:(){
          			Get.find<CountReactvieGetx>().putNumber(5);
          		}
          	),
        ]
      )
    )
}

Reactive Getx Controller

class CountReactiveGetx{
  RxInt count = 0.obs; //반응형 관리
  void increase(){
    count++;
  }
  void putNumber(int value){
  	count(value);
  }
}
  • GetXは、値変更時のみステータス
  • を更新する.

    イベントの挿入

    class CountReactiveGetx extends GetxController{
      RxInt count = 0.obs; //이러한 반응형 상태일때만 가능!!
      void increase(){
        count++;
      }
      void putNumber(int value){
      	count(value);
      }
      
      	@override
        void oninit(){
          ever(count, (_) => print("매번 호출));
          once(count, (_) => print("한번만 호출));
          debounce(count,(_) => print("마지막 변경에 한번만 호출"),time:Duration(seconds:1))
          interval(count,(_) => print("변경되고 있는 동안 1초마다 호출"))
          
          // ==> count값이 변화하면 ever, once가 호출된다.
          // debounce는 검색 기능에서 유용하게 사용됨.
          super.onInit();
        }
        
        @override
        void onCLose(){
          super.onClose();
        }
        
        @override
        	get onDelete => super.onDelete;
      
      
    }

    Rxデータ型

    enum NUM {FIRST,SECOND}
    
    class User{
      String name;
      int age;
      User({this.name, this.age})
    }
    
    class CountReactiveGetx extends GetxController{
      RxInt count = 0.obs;
      RxDouble _double = 0.0.obs;
      RxString value = "".obs;
      Rx<NUM> nums = NUM.FIRST.obs;
      Rx<User> user = User(name:'Mia',age:10).obs;
      RxList<String> list=[].obs;
      
      void increase(){
        count++;
        _double++;
        _double(424);
        
        nums(NUM.SECOND);
        user(User());
        user.update((_user){ _user.name='James'});
        
        //list.addAll();
        //list.add();
        //list.addIf(user.value.name == 'Mia','OKAY') //(조건,추가할요소)
      } 
      
    }

    整理する


    単純なステータス管理は、設定値を変更する必要がなく、条件なしで呼び出されます.反応型ステータス管理は、値を変更する必要がなく呼び出されないため、リソースを節約できます.
    「リアクション」ステータス管理、「単純」ステータス管理、または「両方」を使用します.
    ソース:https://www.youtube.com/watch?v=TjC1ka8fZJw