변수 선언 위치 기준이 궁금합니다.
106
작성한 질문수 6
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!
[코드팩토리 디스코드]
https://bit.ly/3HzRzUM
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
(Stateful 위젯을 기준으로) 변수를 선언할 때 어떨 때는 stateful 위젯 클래스에, 어떨 때는 state 클래스에, 어떨 때는 build 함수 안에 하는데 그 기준이 궁금합니다. 특히 stateful 위젯 클래스에 변수를 선언하는 것과 state 클래스에 변수를 선언하는 것의 차이, 기준이 궁금합니다.
답변 2
0
안녕하세요!
StatefulWidget과 State에 변수를 선언하는건 너무도 명확한 차이가 있습니다.
StatefulWidget은 내부적으로 변화 할 수 있는 상태를 절대 들고있지 않습니다. 생성자의 파라미터를 통해 받은 값들을 저장해두는 역할만 한다고 생각하시면됩니다.
State 클래스의 변수는 내부적으로 값을 변경 가능합니다.
이해가 되지 않는다면 제 라이프사이클 강의를 꼭 여러번 다시 봐보시길 바랍니다. 플러터 프로그래밍을 하는데 가장 중요한 내용이 담겨 있습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 양용찬님, 몇 가지 관련 질문과 그에 대한 답변을 조사하여 아래와 같이 정리하였습니다.
StatefulWidget과 관련된 변수 선언 위치에 관한 일반적인 핵심 사항은 다음과 같습니다:
Stateful 위젯 클래스 vs. State 클래스:
- StatefulWidget 클래스: 여기에는 일반적으로 immutable한 변수나, 가변이 아닌 상수와 같은 전역적으로 사용해야 하는 추가적인 정보들이 선언됩니다. 위젯 생성 시 초기화되어 상태 변경과 무관하게 사용됩니다.
- State 클래스: 상태 변화에 따라 변할 수 있는 변수들이 선언됩니다. UI가 재빌드될 때 영향을 받을 수 있는, 즉 애플리케이션의 상태에 따라 변화될 수 있는 변수들은 이곳에 선언합니다.
- StatefulWidget 클래스: 여기에는 일반적으로 immutable한 변수나, 가변이 아닌 상수와 같은 전역적으로 사용해야 하는 추가적인 정보들이 선언됩니다. 위젯 생성 시 초기화되어 상태 변경과 무관하게 사용됩니다.
Build 함수 내부:
- Build 함수: 함수가 호출될 때마다 새로 생성되어야 하는, ephemeral한(잠시 존재하는) 데이터가 사용됩니다. 이런 데이터는 매번 새로운 값을 생성해야 하므로 build 함수 내에 선언하는 것이 적합합니다.
- Build 함수: 함수가 호출될 때마다 새로 생성되어야 하는, ephemeral한(잠시 존재하는) 데이터가 사용됩니다. 이런 데이터는 매번 새로운 값을 생성해야 하므로 build 함수 내에 선언하는 것이 적합합니다.
관련 링크를 통해 더욱 자세한 설명을 확인해 보실 수 있습니다:
- 참조하는 변수의 선언 위치 질문 - 변수 선언의 차이와 메모리 관리 측면에서의 설명입니다.
- 변수 선언 위치 개념 - StatefulWidget에서 stateful 클래스와 상태 클래스의 변수 선언 효과에 대한 강사의 해설입니다.
- 변수의 선언 위치 질문입니다. - build 함수 내와 클래스 내 변수 선언 차이에 대한 구체적인 예입니다.
위 답변들이 양용찬님의 질문에 도움이 되기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
198강 (){onTap(e);}의 이해 돕기
0
24
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
setState()를 호출하지 않으면 build가 실행 안되는 건가요?
0
53
1
video_call 플러그인 설치시 에러문제
0
64
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
63
1
API 관련 이슈
0
86
2





