
Ⅰ. 서론: Dart에서 변수 선언 시 고려해야 할 사항
📌 1. 변수 선언 시 타입을 지정하는 방식
📌 2. 변경 가능한 변수와 변경 불가능한 변수
Ⅱ. 본론: var, dynamic, const, final 차이점 분석
📌 Step 1: var (타입 추론 변수)와 활용법
📌 Step 2: dynamic (동적 타입 변수)와 차이점
📌 Step 3: const (컴파일 타임 상수)와 활용법
📌 Step 4: final (런타임 상수)와 차이점
📌 Step 5: const vs final 차이점 완벽 정리
Ⅲ. 언제 어떤 변수를 사용해야 하는가?
📌 최적의 변수 선언 방식 선택하기
📌 변수 선언 시 주의할 점
Dart에서
var, dynamic, const, final
차이점 정리 🎯📌
Dart에서는 변수를 선언할 때
var, dynamic, const, final
키워드를 사용할 수 있습니다.
각각의 키워드는
변수의 타입 결정 방식과
값 변경 가능 여부가 다르므로,
정확한 차이를 이해하는 것이 중요합니다.
이번 포스팅에서는
각 키워드의 차이점과 사용법을
코드 예제와 함께
상세히 정리하겠습니다. 🚀
먼저
더 많은 정보, 혹은
순서대로 포스팅을 보고 싶다면
아래 노션을 확인해주세요.

https://mongmung-i.notion.site/Flutter-1a39b1e2cdaa80319a0fc2a89281dc71?pvs=4
Flutter 어플 개발 일지 | Notion
Made with Notion, the all-in-one connected workspace with publishing capabilities.
mongmung-i.notion.site
https://mongmung-i.notion.site/19f9b1e2cdaa80a984ade6141a87fd29?pvs=4
창업 트랙 사전 캠프 𓆲 | Notion
이 곳은 창업 트랙 사전 캠프 진행 사항을 정리하는 곳입니다.
mongmung-i.notion.site
Ⅰ. 서론: Dart에서 변수 선언 시 고려해야 할 사항 🤔
프로그래밍을 하다 보면 변수를 선언할 때
값을 변경할 수 있는지,
어떤 데이터 타입을 저장할지
고려해야 합니다.
Dart에서는 이를 위해
var, dynamic, const, final
네 가지 함수를 활용합니다.
그렇다면, 어떤 경우에 어떤 키워드를 사용해야 할까요?
예를 들어,
- var을 사용하면 타입을 자동으로 추론하면서도 값 변경 가능
- dynamic을 사용하면 변수의 타입을 자유롭게 변경 가능
- const는 컴파일 시점에 값이 결정되는 변경 불가능한 상수
- final은 한 번 할당되면 바꿀 수 없는 값, 하지만 런타임에서 결정 가능
이번 포스팅에서는
각 키워드의 차이점과 사용법을
코드 예제와 함께
자세히 정리하겠습니다. 🚀
변수 선언 시 타입을 지정하는 방식
Dart에서는 변수를 선언할 때
다양한 방법을 사용할 수 있습니다.
각 방식마다
타입 결정 방식과
변경 가능 여부가 다르므로
적절한 선택이 필요합니다.
✅ 명시적 타입 지정 → int age = 30;
✅ 타입 추론(var) → var name = 'Dart';
✅ 동적 타입(dynamic) → dynamic value = 'Hello';
✅ 변경 불가능한 값(const, final) → const pi = 3.14;
변경 가능한 변수와 변경 불가능한 변수
변수는 크게
변경 가능한 변수(Mutable)와
변경 불가능한 변수(Immutable)
로 나뉩니다.
✅ 변경 가능 (Mutable) → var, dynamic
✅ 변경 불가능 (Immutable) → const, final
➡ 값을 변경할 필요가 없다면 const 또는 final을 사용하는 것이 좋습니다! 🚀
Ⅱ. 본론: var, dynamic, const, final 차이점 분석 🏗️
Step 1: var (타입 추론 변수)와 활용법
📌 var이란?
var 키워드는 변수를 선언할 때
Dart가 자동으로 타입을
추론하도록 도와줍니다.
한 번 타입이 결정되면,
다른 타입으로 변경할 수 없습니다.
Dart가 자동으로 추론하여 지정해주니,
더욱 간편한 타입 추론변수
살펴볼까요?

✅ Dart가 자동으로 타입을 추론하여 지정
✅ 한 번 타입이 결정되면 변경할 수 없음 (강타입)
✅ 값 변경 가능 (mutable)
void main() {
var name = 'Flutter'; // Dart가 자동으로 String 타입으로 추론
print('이름: $name'); // 출력: Flutter
// name = 42; // ❌ 오류 발생 (String으로 타입이 고정되었기 때문)
}
➡ 정리:
- var은 초기 값에 따라 타입이 결정되며, 이후 변경 불가능합니다.
- 타입을 명확하게 알고 있을 때 사용하면 좋습니다.
- 타입이 변하지 않는 경우 var을 사용하면 가독성이 높아집니! 🎯
Step 2: dynamic (동적 타입 변수)와 차이점
📌 dynamic이란?
dynamic 키워드는
변수의 타입을 자유롭게
변경할 수 있는 변수입니다.
즉, 한 번 문자열을 저장했다가
나중에 숫자로 바꿀 수도 있습니다.
✅ 변수의 타입이 실행 중에 변경될 수 있음
✅ 타입이 자동으로 결정되지 않음 (정확한 타입 체크 X)
✅ 값 변경 가능 (mutable)
void main() {
dynamic value = 'Hello';
print(value); // 출력: Hello
value = 42; // 타입 변경 가능
print(value); // 출력: 42
}
✅ 정리
- dynamic은 타입이 정확하지 않거나, 실행 중 타입이 바뀔 가능성이 있는 경우 사용
- 하지만, 잘못 사용하면 예기치 않은 오류 발생 가능
➡ 타입 안정성이 필요하다면 var을 사용하고, 꼭 필요한 경우에만 dynamic을 사용합니다! 🚨
Step 3: const (컴파일 타임 상수)와 활용법
📌 const란?
const 키워드는
컴파일 타임에 값이 결정되며,
이후 변경할 수 없는 상수를 선언할 때
사용됩니다.
예를 들어,
원주율(pi)처럼
변하지 않는 값에 적합합니다.
✅ 변경 불가능한 상수를 선언할 때 사용
✅ 컴파일 타임에 값이 결정되어야 함
✅ 반드시 값을 할당해야 함 (null 불가)
void main() {
const double pi = 3.14; // 변경 불가능한 상수
print(pi); // 출력: 3.14
// pi = 3.1415; // ❌ 오류 발생 (const 변수는 수정 불가능)
}
✅ 정리
- const는 변경할 필요 없는 값(예: 수학 상수, 앱 버전 등)에 사용
- 컴파일 타임에 이미 값이 정해져 있어야 함
➡ 절대 변하지 않는 상수라면 const를 사용하는 것이 좋음! 🚀
Step 4: final (런타임 상수)와 차이점
📌 final이란?
final 키워드는 한 번 값을 할당하면
변경할 수 없는 변수입니다.
하지만
const와 달리 컴파일 시점이 아니라,
실행 중(런타임)에
값이 결정될 수 있습니다.
예를 들어,
현재 날짜를 저장하는 변수를 만들 때
final을 사용할 수 있습니다.
날짜는 프로그램 실행 시 결정되지만,
실행 중 변경해서는 안 되기 때문입니다.
✅ 한 번 값을 할당하면 변경할 수 없음
✅ 하지만, 컴파일 타임이 아닌 런타임에서 값이 결정될 수 있음
✅ 클래스 내에서 상수를 선언할 때 유용
void main() {
final DateTime now = DateTime.now(); // 실행 시점에서 값이 결정됨
print(now);
// now = DateTime.utc(2023, 12, 31); // ❌ 오류 발생 (final 변수는 재할당 불가)
}
✅ 정리
- final은 값이 한 번만 설정되면 변경되지 않음
- 컴파일 타임이 아닌 런타임에서 값이 정해질 수도 있음
➡ const와 달리 실행 시점에서 값이 정해지는 경우 final을 사용! 🚀
Step 5: const vs final 차이점 완벽 정리
📌 const와 final은
모두 변경할 수 없는 상수이지만,
언제 값이 결정되는지에 따라
사용법이 다릅니다.
차이점 | const | final |
값 변경 여부 | ❌ 변경 불가능 | ❌ 변경 불가능 |
값 결정 시점 | 컴파일 타임 | 런타임 |
클래스 내에서 사용 가능 여부 | ✅ 사용 가능 | ✅ 사용 가능 |
실행 중 값 변경 가능 여부 | ❌ 불가능 | ❌ 불가능 |
사용 예시 | const pi = 3.14; | final today = DateTime.now(); |
🚀 요약:
- 컴파일 타임에 값이 확정되어야 한다면 → const
- 런타임에서 값이 결정되는 경우 → final
➡ Flutter UI 요소를 최적화하려면 const를 적극 활용하는 것이 좋습니다! 🎯
Ⅲ. 언제 어떤 변수를 사용해야 하는가? ✅
이제까지 배운 내용을 정리해보겠습니다.
Dart에서 변수를 선언할 때
어떤 상황에서
어떤 키워드를 사용해야 하는지
살펴보겠습니다.
void main() {
var language = 'Dart'; // 타입 자동 지정 (String)
dynamic value = '변경 가능'; // 타입 변경 가능
const double pi = 3.1415; // 변하지 않는 상수
final DateTime today = DateTime.now(); // 런타임에 결정되는 상수
print('💡 프로그래밍 언어: $language');
print('🔄 dynamic 값: $value');
value = 42; // dynamic은 타입 변경 가능
print('🔄 dynamic 값 변경 후: $value');
print('🔢 원주율 (const): $pi');
print('📅 오늘 날짜 (final): $today');
}
최적의 변수 선언 방식 선택하기
✅ 변경 가능한 변수 → var (타입이 변하지 않는 경우)
✅ 동적 타입이 필요한 경우 → dynamic (가능한 한 사용 지양)
✅ 절대 변하지 않는 상수 → const (컴파일 타임 결정)
✅ 한 번만 설정되지만 실행 중 결정되는 값 → final (런타임 결정)
변수 선언 시 주의할 점
✅ 무조건 dynamic을 사용하면 타입 오류를 찾기 어려움 → var을 선호
✅ Flutter UI에서 const를 적극 활용하면 성능 최적화 가능
✅ 상수 값을 다룰 때 final과 const 차이를 명확히 이해하고 선택
즉,
Dart에서 변수 선언 시
상황에 따라
적절한 키워드 사용하여야 하고
변경 가능성에 따라
var, final, const를
올바르게 활용하며
const는
컴파일 타임 상수,
final은 런타임 상수라는 것을
알았습니다.
