강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

David Heo님의 프로필 이미지
David Heo

작성한 질문수

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

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가 변경돼야하는 부분이 아니라 넣지 않아도됩니다.

제 생각에는 다른 부분에서 문제가 있었을걸로 예상됩니다!

David Heo님의 프로필 이미지
David Heo
질문자

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

David Heo님의 프로필 이미지
David Heo

작성한 질문수

질문하기