Flutter

Stateless Widget 에 const를 붙여야하는 이유

flutter developer 2024. 5. 30. 22:11

플러터를 하다보면 가장 많이 보는 안내창이 바로 위젯에 const 키워드를 넣으라는 문구일 것이다. 그렇다면 왜 IDE에서 제발 const를 넣으라고 울부짖는걸까? 

 

https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/learn/lecture/37130498#content

Flutter 위젯에 const를 붙여야하는 이유는 바로 메모리 최적화 때문이다. const없이 위젯을 선언하게 되면 새로운 중복된 위젯 메모리공간을 사용하게 되기 때문이다.  단순히 메모리 최적화뿐만 아니라원하는 위젯 메모리를 바라보게 해야할 때 위젯이 중복되버리면 어느 위젯 메모리를 포인팅해주어야하는지 상당히 난감해지므로 왠만하면 위젯 앞에 const를 붙이자.

 

주의할점으로는 위젯 앞에 const를 붙인다는 것 자체가 해당 위젯은 변하지 않는다는 것을 선언하는 것이다. const 자체가 컴파일 상수임을 의미하기 때문이다. StatefulWidget, 애니메이션과 같이 상태에 의해 변화하는 위젯들은 const를 붙여줄 수 없다는 것을 기억하자.

 

linter:
  rules:
    - prefer_const_constructors
    - prefer_const_literals_to_create_immutables

위젯에 const를 사용해주지 않아도 에러는 안나기 때문에 빌드하는데 문제는 없다. 그렇다고 팀원이 모든 statless 위젯에 const를 안붙이면 곤란할 수 있으니 린트 설정을 위와 같이 하여 플러터 불변위젯에 const를 붙이지 않은 실수를 최소화할 수 있다.