stateless인데 어떻게 final 값이 변하죠?
469
작성한 질문수 2
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는 자신이 리턴하는 컴포넌트를 추적하고 있다가 내부적으로 값이 바뀌면 알아서 스스로 랜더링을 해주는 것 맞나요?
198강 (){onTap(e);}의 이해 돕기
0
39
1
video_call 플러그인 설치후 에러 발생
0
47
1
SDK 안드로이드 설치 질문!
0
62
1
코드팩토리 디스코드 링크 다시 부탁드려요~
0
94
1
Webview를 이용해서 URL 상의 페이지 출력 불가
0
71
1
홈스크린 함수를 함축해서 main.dart에 옮기는 문제
0
57
1
플레이스토어
0
62
1
아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?
0
56
1
가이드라인 질문
0
59
0
emulator 에러 환경설정 뭐가 문제 일까요??
0
78
1
emulator 실행 오류
0
96
3
Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련
0
73
1
pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의
0
44
1
setState()를 호출하지 않으면 build가 실행 안되는 건가요?
0
54
1
video_call 플러그인 설치시 에러문제
0
67
1
children 안의 if 문에서 { } 못쓰는 이유?
0
51
1
이렇게 오류가 떠요
0
67
1
AppBar 사용했는데
0
64
2
[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다
0
59
1
StatefulWidget 실습 에러가 발생합니다.[해결완료]
0
65
1
Video Player 프로젝트에 대한 추가 질문
0
54
0
Row위젯이나 column위젯의 위치는 누가 정하나요??
0
43
1
geolocator 오류때문에 개발진행이 불가능입니다
0
64
1
API 관련 이슈
0
89
2





