inblog logo
|
Gyeongwon's blog
    FlutterDart

    [Flutter #7] Flutter에서 const vs final 정리

    도경원's avatar
    도경원
    Sep 26, 2025
    [Flutter #7] Flutter에서 const vs final 정리
    Contents
    1. 공통점2. 차이점3. 위젯 빌드 과정에서의 차이4. 사용 가이드라인5. 한눈에 보는 비교표6. 결론
    Flutter를 배우다 보면 const와 final을 헷갈리기 쉽습니다.
    둘 다 값을 변경할 수 없다는 공통점이 있지만, 빌드 과정과 메모리 사용에서 차이가 큽니다.

    1. 공통점

    • 둘 다 재할당 불가 (immutable reference)
    • 한 번 초기화되면 다시 값 변경 불가
    • 변수 선언 시 “이 값은 바뀌지 않는다”는 의도를 나타냄

    2. 차이점

    ✅ final

    • 런타임에 값 확정 (프로그램 실행 중 처음 할당될 때 결정)
    • 새로운 객체를 매번 생성 가능 → 위젯 리빌드 시 객체 재생성
    • 성능 최적화 효과 없음
    예시:
    final now = DateTime.now(); // 실행 시점에 값이 정해짐

    ✅ const

    • 컴파일 타임에 값 확정 (코드 작성 시 이미 결정 가능)
    • 같은 const 객체는 메모리에 한 번만 생성 → 캐싱 & 재사용
    • 위젯 빌드 과정에서 불필요한 객체 생성을 방지 → 성능 최적화
    예시:
    const pi = 3.14; // 이미 컴파일 시점에 확정 가능

    3. 위젯 빌드 과정에서의 차이

    ❌ final만 사용한 경우

    class MyPage extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: Text("Hello", style: TextStyle(color: Colors.black)), // final 객체처럼 매번 새로 생성됨 ); } }
    • build()가 호출될 때마다 TextStyle 객체가 새로 생성됨
    • 위젯 트리 비교 시 "다른 객체"로 인식 → 불필요한 리빌드 발생 가능

    ✅ const를 사용한 경우

    class MyPage extends StatelessWidget { @override Widget build(BuildContext context) { return const Center( child: Text("Hello", style: TextStyle(color: Colors.black)), // const 객체는 캐싱되어 재사용됨 ); } }
    • const 덕분에 TextStyle은 컴파일 타임에 고정
    • 위젯 트리 비교 시 동일 객체로 인식 → 불필요한 리빌드 방지
    • 메모리, 성능 모두 이득

    4. 사용 가이드라인

    • 항상 const 먼저 고려하기
      • 빌드 시점에 값이 바뀌지 않는다면 const 사용
      • 예: 색상, 아이콘, 텍스트 스타일, static 위젯
    • 런타임에만 알 수 있는 값이면 final
      • 예: DateTime.now(), API 호출 결과, 사용자 입력 값

    5. 한눈에 보는 비교표

    구분
    const
    final
    값 확정 시점
    컴파일 타임
    런타임
    객체 생성
    한 번 생성 후 캐싱, 재사용
    호출 시마다 새 객체 생성 가능
    빌드 최적화
    ✅ 불필요한 위젯 리빌드 방지
    ❌ 없음
    사용 예시
    색상, 아이콘, 텍스트 스타일
    API 데이터, 실행 중 계산 값

    6. 결론

    • Flutter 위젯 트리에서 성능 최적화를 원한다면 const를 적극 활용하자
    • 값이 런타임에만 정해지는 경우는 어쩔 수 없이 final.
    • 일반적인 UI 코드에서는 const를 습관적으로 붙여두는 게 베스트 프랙티스입니다.

     
    Share article
    Contents
    1. 공통점2. 차이점3. 위젯 빌드 과정에서의 차이4. 사용 가이드라인5. 한눈에 보는 비교표6. 결론

    Gyeongwon's blog

    RSS·Powered by Inblog