TIL

Flutter의 const 키워드

kimw746 2025. 1. 15. 16:43

Flutter를 사용하다 보면 const 키워드를 자주 보게 될 텐데요. 특히 위젯을 정의할 때 많이 사용됩니다. 이번 글에서는 const 키워드가 무엇인지, 왜 사용하는지, 그리고 실생활에서 어떻게 활용되는지를 저같은 초보자도 이해하기 쉽게 설명하겠습니다.

 

const란 무엇인가요?

const는 'constant(상수)'의 약자로, 한 번 정의되면 변경되지 않는 값을 나타냅니다. Dart(Flutter의 프로그래밍 언어)에서는 const 키워드를 사용해 변하지 않는 객체를 정의할 수 있습니다.

쉽게 말하면, const는 "이 값은 절대로 바뀌지 않아!"라고 Dart에게 알려주는 것입니다.

 


const의 특징

  1. 컴파일 타임 상수
    • const로 선언된 값은 컴파일 타임(앱이 빌드될 때)부터 고정됩니다.
    • 앱 실행 중에는 이 값을 변경할 수 없습니다.
  2. 불변 객체
    • const로 생성된 객체는 내부 데이터도 변경할 수 없습니다.
    • Dart에서는 이 불변성을 활용해 메모리를 효율적으로 관리합니다.
  3. 위젯 트리 최적화
    • Flutter에서 const 키워드를 사용하면 위젯 트리를 더 효율적으로 렌더링할 수 있습니다. 동일한 const 객체는 다시 생성하지 않고 재사용됩니다.

const와 final의 차이점

많은 초보자가 const와 final의 차이를 헷갈려 하는데요. 두 키워드는 모두 변하지 않는 값을 나타내지만, 중요한 차이점이 있습니다:

특징constfinal

특징 const final
선언시점 컴파일 타임에 값이 고정 됨 런타임에 값이 고정 됨
값의 불변성 내부 데이터도 불변 참조만 불변(내부 데이터는 변경가능)
사용 가능한 곳 위젯, 객체, 변수 등 다양한 곳에서 사용 가능 주로 변수에 사용됨


예를 들어:

const int a = 10; // 컴파일 타임에 값이 고정됨
final int b = DateTime.now().year; // 런타임에 값이 고정됨

const를 사용하는 이유

  1. 성능 최적화
    • const 객체는 메모리를 재사용하므로 앱이 더 빠르고 효율적으로 실행됩니다.
  2. 가독성 향상
    • "이 값은 변하지 않는다"는 의미를 명확히 하여 코드를 읽는 사람이 더 쉽게 이해할 수 있습니다.
  3. 버그 방지
    • 변하지 않는 값을 명시적으로 정의하면 의도치 않은 수정으로 인한 버그를 예방할 수 있습니다.

실생활에서의 const 사용 예

1. Flutter 위젯에서 const

Flutter에서 const는 위젯 트리를 효율적으로 관리하기 위해 자주 사용됩니다. 예를 들어:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Hello, const!')),
        body: const Center(
          child: Text(
            '이 텍스트는 변하지 않아요!',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

위 코드에서 const를 사용하면, Text와 TextStyle 객체는 앱 실행 중에 다시 생성되지 않고 메모리를 재사용합니다.

2. 리스트와 맵에서 const

const 키워드는 리스트나 맵을 불변으로 만들 때도 사용됩니다:

void main() {
  const List<String> fruits = ['Apple', 'Banana', 'Orange'];
  // fruits.add('Grape'); // 에러 발생! 리스트가 불변이기 때문

  print(fruits);
}

const를 사용할 때 주의할 점

  1. const는 완전히 불변이어야 합니다.
    • const로 선언된 객체는 내부 데이터도 절대 변경할 수 없습니다.
  2. 컴파일 타임에 값이 결정되어야 합니다.
    • const는 실행 중 동적으로 계산되는 값을 사용할 수 없습니다.
  3. 적재적소에 사용해야 합니다.
    • 모든 곳에 const를 사용하면 오히려 코드가 불필요하게 복잡해질 수 있습니다. 변하지 않는 값에만 사용하세요.

결론

const 키워드는 Flutter 앱 개발에서 성능과 코드 품질을 높이는 데 매우 유용한 도구입니다. 특히 불변 객체를 정의하거나 위젯 트리를 최적화할 때 큰 도움이 됩니다. 하지만 사용법과 제한 사항을 잘 이해하고 적절히 사용하는 것이 중요합니다.