build 함수안에 선언하는 것과 밖에 선언하는 것의 차이가 무엇인가요?
이번 강의에서 textStyle을 build 함수 안에 선언하는데
그냥 밖에다가 밑에처럼 하면 안되는 건가요?
안된다면 차이가 뭔가요?
import 'package:calendar_scheduler/const/colors.dart';
import 'package:flutter/material.dart';
class TodayBanner extends StatelessWidget {
final DateTime selectedDay;
final int scheduleCount;
const TodayBanner({
required this.selectedDay,
required this.scheduleCount,
Key? key,
}) : super(key: key);
static const textStyle = TextStyle(
fontWeight: FontWeight.w600,
color: Colors.white,
); // 이부부부부분
@override
Widget build(BuildContext context) {
//원래 선언 자리
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
child: Container(
color: PRIMARY_COLOR,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${selectedDay.year}년 ${selectedDay.month}월 ${selectedDay.day}일',
style: textStyle,
),
Text(
'$scheduleCount개',
style: textStyle,
)
],
),
),
);
}
}
답변 1
2
안녕하세요!
build() 함수 내부에 선언하면 build() 함수의 사이클과 함게 변수가 갱신되고, 삭제되고, 생성됩니다. static const로 선언할경우 build() 함수의 사이클과 전혀 관계가 없게됩니다. 그러니 build() 함수가 재실행 될때마다 변수값이 갱신돼야한다면 build() 함수 내부에 선언하는게 맞겠습니다.
또한 static으로 선언하면 외부에서 TodayBanner.textStyle로 액세스가 가능해집니다. build() 함수 내부는 불가능합니다.
이런 차이점들이 있지만 이 차이점들이 단점이 되지 않는다면 어느곳에 선언해도 로직은 동일하게 작동 할 수 있습니다. 공집합이 없는 요소가 아니기때문이죠.
감사합니다!
198강 (){onTap(e);}의 이해 돕기
0
25
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





