작성
·
384
0
floating button을 눌렀을때
modalbottomsheet가 builder를 통해 scheduleBottomSheet라는 "stateless"위젯을 반환합니다.
바텀시트에서 textfield를 눌러 키보드가 나오는 경우 final 변수인 bottomInset이 0에서 키보드 높이값으로 변하여 padding이 적용됩니다.
혹시 stateless위젯은 setstate를 사용하지 못할뿐 내부 시스템적으로 바뀌는 값에 대해서는 state처럼 값 변경이 발생하는 것인가요?
아니라면 modalbottomsheet의 builder가 바텀시트를 리랜더링하는 것인가요?
답변 2
0
안녕하세요!
상태관리 강의를 복기해보시면 StatelessWidget은 한번 생성되면 절대로 변경되지 않는다고 제가 말씀드린걸 기억하실겁니다.
그러니 StatelessWidget은 자체적인 setState 함수가 존재하지 않습니다.
화면에서 위젯이 사라지고 새로 그려질때는 새로운 StatelessWidget이 생성될 뿐입니다.
TextField의 경우 상태 변경의 스코프가 TextField 위젯 내부에 있습니다. 그러니 Modal에 직접적으로 반환해주는 위젯과는 관계가 없습니다.
질문을 잘 이해했는지 잘 모르겠습니다. 해소가 안되셨다면 다시 질문해주세요!
감사합니다.
0
디버깅하면서 직접확인해 보니 키보드가 올라오면서 시스템 값이 바뀔때 builder가 다시실행 되는 군요
그렇다면 modalbottomsheet의 builder는 자신이 리턴하는 컴포넌트를 추적하고 있다가 내부적으로 값이 바뀌면 알아서 스스로 랜더링을 해주는 것 맞나요?