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

장우준님의 프로필 이미지
장우준

작성한 질문수

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

HomeScreen 구현하기

커스텀 위젯 변수 선언 위치 차이

작성

·

125

0

StatelessWidget이나 StatefulWidget에서 변수를 선언할 때

빌드 함수 내에 선언하는 것과 빌드 함수 밖에 선언하는 것은 어떤 차이가 있나요?

답변 1

0

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

안녕하세요!

예제를 함께 작성해주시면 질문을 좀 더 정확히 이해 할 수 있을 것 같습니다.

현재 내용으로 파악 했을때는 클래스의 프로퍼티로 변수를 선언하는 것과 함수에 변수를 선언하는 차이가 무엇인지 질문하는걸로 확인되니 이에 대해 답변드리겠습니다.

첫번째로는 Scope입니다. 당연히 클래스 프로퍼티로 선언한 변수는 클래스 내에서 전역적으로 사용이 가능합니다. 반대로 함수에 선언한 변수는 함수의 scope를 벗어날 수 없습니다.

두번째로는 생성 시기입니다. 클래스의 프로퍼티는 클래스가 인스턴스화 될때 생성되지만 함수 내부에 변수를 선언할 경우 함수가 실행될때 생성됩니다. 쉬운 예제로는 DateTime.now()를 클래스의 프로퍼티에 생성할때와 함수에 선언할때는 완전 다른 값이 나오겠죠?

너무도 큰 차이지만 특정 상황에는 같은 결과를 도출해내는 경우가 있습니다. 예를들어서 절대로 변경될 일 없는 String 값을 선언하고 하나의 함수에서만 접근한다면 어디서 선언해도 아무런 상관이 없습니다.

감사합니다!

장우준님의 프로필 이미지
장우준

작성한 질문수

질문하기