선언하는 게 헷갈립니다(섹션15_선택된 날짜 상태관리하기)
228
작성한 질문수 1
선생님의 강의 진도를 나가면서 기본기를 계속 복습하고 있지만 제가 머리가 좋지 않아서 질문이 있습니다
TopState 클래스 안에서 selctedDate는 왜 _TopState 함수 아래에 바로 선언하는데
now,textTheme 같은 경우엔 왜 빌드 함수 아래에 선언하는지 모르겠습니다
답변 2
0
안녕하세요!
자신을 머리가 좋지 않다고 단정하지 마세요!
원래 프로그래밍은 어려운게 맞습니다.
함수 내부에 값을 선언하는 것과 클래스의 프로퍼티로 값을 선언하는건 여러 차이가 있습니다.
일단 클래스의 프로퍼티로 값은 선언하는건 해당 클래스가 생성될때 초기화됩니다. 그렇기 때문에 인스턴스화 될때 값이 지정되고 값을 변경하지 않는이상 변경되지 않습니다.
하지만 함수 내부에 선언할경우 함수가 실행 될때마다 매번 다시 값이 선언됩니다.
추가로 값을 접근하는 스코프의 차이가 있습니다. 클래스의 프로퍼티로 선언하게되면 클래스 내부 어디서든 접근이 가능합니다.
하지만 함수에 선언한 변수는 해당 함수 내부에서만 사용 가능합니다.
이 모든걸 고려했을때도 그 어디에 선언해도 상관 없는 경우가 사실 굉장히 많습니다. 그럴때는 어디에 선언하셔도 큰 차이가 없다고 생각하셔도 됩니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
Flutter에서 변수의 선언 위치는 해당 변수의 사용 범위와 생명 주기에 따라 달라집니다. 일반적으로 클래스 수준에서 변수를 선언하면 해당 클래스의 모든 함수에서 변수에 접근할 수 있고, 클래스의 인스턴스가 생존하는 동안 그 변수도 유지됩니다. 이 경우 selectedDate와 같은 변수는 여러 함수에서 공유되어 사용되거나, 클래스의 상태를 나타내는 중요한 정보를 저장하는 데 사용될 때 클래스 수준에서 선언합니다.
반면, 특정 함수 안에서만 사용되는 변수는 그 함수 안에서 선언하는 것이 좋습니다. build 함수에서 선언된 now, textTheme와 같은 변수들은 이 함수 내부에서만 유효하며, build 함수의 호출마다 초기화됩니다. build 함수는 Flutter에서 화면을 다시 그릴 필요가 있을 때마다 호출되므로, 화면에 관련된 변수나 현재 상태에 의존하는 값을 함수 내부에서 선언하여 사용합니다.
선언 위치에 따라 변수의 접근 범위와 생명 주기가 결정되므로, 변수를 사용하는 목적에 맞게 적절한 위치에 선언해야 합니다.
198강 (){onTap(e);}의 이해 돕기
0
27
1
video_call 플러그인 설치후 에러 발생
0
45
1
SDK 안드로이드 설치 질문!
0
60
1
코드팩토리 디스코드 링크 다시 부탁드려요~
0
92
1
Webview를 이용해서 URL 상의 페이지 출력 불가
0
70
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
64
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





