인프런 커뮤니티 질문&답변
this.controller = controller; 관련해서 질문드립니다.
작성
·
266
0
안녕하세요. 다름이 아니라
onWebViewCreated: (WebViewController controller) {
this.controller = controller;
},이 코드가 먹히지 않는 것 같아서 질문글 남깁니다.
분명 모든 코드를 똑같이 따라했는데 controller에는 계속 null 값이 있는 것 같아 보입니다.
제 생각에 stateless 위젯이라 그런 것 같아서 stateful 위젯으로 변경 후
onWebViewCreated: (WebViewController controller) {
setState(() {
this.controller = controller;
});
},위와 같이 setState를 활용해 controller에 값을 할당하니 이제야 정상적으로 작동이 되더군요.
다시 생각해봐도 stateful 위젯 및 setState를 활용해야 될 것 같은데 강의에서 stateless 위젯을 활용하신 이유와, (제가 작성한 stateless 코드는 제대로 작동하지 않았지만) 강의에서 코드가 제대로 작동한 이유가 궁금합니다.
답변 1
0
코드팩토리
지식공유자
안녕하세요.
setState() 함수의경우 build() 함수를 재실행해주는 역할을 합니다.
하지만 controller의 경우 build() 함수가 재실행돼서 UI가 변경돼야하는 부분이 아니라 넣지 않아도됩니다.
제 생각에는 다른 부분에서 문제가 있었을걸로 예상됩니다!






안드로이드 스튜디오 자체를 껐다 켜보니 문제없이 잘 실행되네요... 분명 안 됐었는데 말이죠 ㅋㅋ; 다음부터는 뭔가 안 되면 안드로이드 스튜디오 자체를 재실행 해봐야겠네요. 감사합니다!