inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

StatefulWidget 라이프 사이클 이론

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

53

Myoungsu Park

작성한 질문수 5

0

안녕하세요.

setState()를 실행하면, build()함수가 실행되는 것을 배웠는데요.

 

build()가 처음 실행된 이후로, setState()를 명시적으로 호출하지 않는다면, build()함수가 실행되는 경우는 없는 것인가요?

즉, setState()를 개발자가 명시적으로 넣어주지 않았다면, 화면 갱신이 절대 발생 안되는 것인지가 궁금했습니다.

 

나중에 강의를 더 나가면 저절로 알게될지도 모르겠지만, 궁금해서 문의드립니다.

 

감사합니다.

flutter 클론코딩

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Myoungsu Park님,

setState() 함수는 StatefulWidget의 상태가 변경될 때 UI를 다시 그려주는 역할을 합니다. 그러나 이외에도 build() 함수가 실행될 수 있는 여러 상황이 있습니다. 예를 들어, 부모 위젯에서 상태 변경이 발생하거나, 화면 회전과 같은 외부 조건에 따라 build()가 호출될 수 있습니다.

실제로 Flutter에서는 다음과 같은 상황에서 build() 함수가 실행될 수 있습니다:

  1. 초기 위젯 트리가 구성될 때.
  2. 부모 위젯이 다시 빌드될 때 (parent widget rebuild).
  3. setState() 함수가 호출될 때.
  4. InheritedWidget에 의한 데이터 변화가 있을 때.
  5. 기기 방향 변화와 같은 외적 변화에 의해 화면이 갱신될 때.

각 상황에 따라 build()가 호출되므로, setState()가 없다 하더라도 위젯 트리가 다시 빌드될 수 있습니다.

관련된 정보를 자세히 이해하고 싶으시다면 다음의 링크를 참고하시면 도움이 될 것입니다:
- setState 질문에 대한 설명
- StatefulWidget과 build 함수의 관계에 대한 설명

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

198강 (){onTap(e);}의 이해 돕기

0

19

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

59

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

69

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

video_call 플러그인 설치시 에러문제

0

63

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

62

1

API 관련 이슈

0

86

2

VoidCallback 뒤에 null 연산자 표기에 관한 질문

0

47

1