IT

Flutter - const Constructor

코딩하는 너구리 2022. 6. 12. 15:43
반응형

 

Flutter를 공부하다가 const constructor에 대해서 알게 되었다. 알아둘 만한 내용이어서 기록해둘까 한다.

 

정확히 말하면 Dart언어의 const constructor인데, 가장 쉬운 예시는 다음과 같다.

const var title = const Text('Hi!')

 

const를 왜 쓸까?

const 생성자를 사용하는 이유는 최적화이다.

컴파일러는 모든 const 객체에 대해 동일한 메모리 부분을 할당하여 객체를 불변으로 만든다. 쉽게 말하면 const로 지정해두면

앱을 실행할 때 한 번만 생성한다는 것인데, 한 번만 만들기 때문에 리소스 낭비를 하지 않는다는 것이다.

 

const와 관련해서 가장 많이 비교하는게 const와 final이 있는데, 간단히만 적어두자.

먼저 dart 언어에는 final과 const가 있다.

두 가지의 공통점은 '한 번 설정한 값을 변경할 수 없다. 다른 값으로 변경하려고 시도하면 컴파일 오류가 발생한다.' 

하지만 두 방식의 차이점으로는 const의 경우, 컴파일 타임에서 상수를 정의한다.

컴파일 타임에서 정의하고, 런타임에서 상수는 정의할 수 없다.

 

예를 들어 보자면, Datetime.now()로 정의되는 값은, 런타임에서 결정된다.

그렇기 때문에 final로 Datetime.now()를 정의할 수 있지만, const로는 정의할 수 없다.

 

const는 그럼 언제 쓰는게 좋을까?

코드 내에서 setState()를 사용할 경우가 굉장히 많아질텐데, setState()를 실행하면 범위에 해당하는 변수들이 모두 재생성된다.

Text()와 같은 정해진 상수의 경우에는 매번 재생성하는 것이 내부 리소스를 낭비하는 것이기 때문에, 이럴 때에는 const를 사용하여 자원을 낭비하지 않도록 해주는 것이 좋다.

 

const Text('build',)

 

간단히 Text 뿐만 아니라 간단한 Widget의 경우에도 const로 정의할 수 있기 때문에,

const 정의가 가능한 경우에는 const를 사용하도록 하자.

반응형