본문 바로가기

Flutter

Flutter - 자식이 위젯에서 부모 위젯의 state 사용하기

자식이 위제에서 부모 위젯의 state를 사용하려면 3가지 단계가 필요하다 .

(자식 => 부모) (동급 위젯 => 동급 위젯) 끼리는 state 전달 안됨

 

1. 보내기

2.자식 위젯에 등록하기 

3.쓰기

 

 

1. 보내기

 

return DialogUI(state : a);

DialogUI 위젯에 

작명 : 보내고자 하는 state 

를 파라미터로 담는다

 

2. 자식 위젯에 등록하기

 

class DialogUI extends StatelessWidget {
  DialogUI({Key? key,this.state}) : super(key: key);
  final state;

 

두 곳에 등록해줘야 한다. 

this.state

final state 

여기서 final 은 변수 var 과 같지만 나중에 변경이 안되는 변수를 만들때 사용한다. 

(부모 위젯에서 가져온 state를 자식위젯에서 변경하면 에러를 일으킬 수 있어 관습적으로 final 사용)

 

3. 사용하기

 

사용한다. 

 

tip) 자주 사용되는 중요한 state는 어떤 위젯도 가져다가 쓰게 최대한 상위 위젯에 보관하는게 좋다. MyApp 이런데 넣으면 됨

 

 

<class 문법>

 

class를 사용할때 파라미터를 입력할 수 있도록 class를 업글할 수 있음. 

 

class DialogUI extends StatelessWidget {
  DialogUI(this.state1,this.state2);
  final state1;
  fianl state2;

클래스명() 써주고 그 안에 필요한 파라미터를 넣어줌

var또는 final을 사용해서 변수명 정의해야함

그런데 이렇게 하면 파라미터 2개 다 입력해야함 안그러면 에러를 낸다. 

 

그래서

 

class DialogUI extends StatelessWidget {
  DialogUI({this.state1,this.state2});
  final state1;
  fianl state2;

 

{} 사용해서 옵셔널을 하면 파라미터 2개가 있지만 1개를 넣든 안넣든 상관없다. 

원래 코드에 있던 keyeh 파라미터로 입력할 수 있다는 것