해결된 질문
작성
·
402
0
이번 강의에서 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() 함수 내부는 불가능합니다.
이런 차이점들이 있지만 이 차이점들이 단점이 되지 않는다면 어느곳에 선언해도 로직은 동일하게 작동 할 수 있습니다. 공집합이 없는 요소가 아니기때문이죠.
감사합니다!