인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

도성이님의 프로필 이미지
도성이

작성한 질문수

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

변수의 선언 위치 질문입니다.

작성

·

305

0



class _TopPartState extends State<_TopPart> {
  DateTime selectedDate = DateTime.now();

  @override
  Widget build(BuildContext context) {
    DateTime now = DateTime.now();

DateTime selectedDate의 경우는 클래스 내부에 선언되어 있고 제 생각에는 createState에 초기화가 될 거 같습니다.

즉, 화면이 처음 그려질 때 시간에 대한 정보를 가지고 있는 것 같아요.

궁금한 점은 DateTime now가 selectedDate와 같은 공간에 선언되지 않고 build에 선언된 이유는 setState(...)를 호출할 때 dirty-> build -> clean과정을 거치게 하기 위함 때문인가요?

답변 1

3

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요.

선택된 날짜는 빌드와 관계없이 데이터를 그대로 유지하기위해서 클래스의 변수로 선언하였고 now의 경우 build가 될때마다 새로 갱신이 되었으면 하는 의도로 build 함수 내부에 선언하였습니다.

클래스의 변수로 선언할경우 build가 재실행돼도 갱신되지 않지만 build 함수 내부의경우 now가 매번 새로운 값으로 갱신됩니다. 그러니 조금 더 업데이트된 '현재' 값을 받을 수 있습니다.

 

도성이님의 프로필 이미지
도성이

작성한 질문수

질문하기