기초 문법
•
변수
•
타입
•
Null Safety
•
상수
•
연산자
•
제어문
◦
조건문
◦
반복문
변수
데이터(값)를 저장하는 메모리 공간
Dart에서는 변수명을 카멜 케이스(CamelCase)로 작성하는 것이 관례입니다.변수 선언
var 변수명;
Dart
복사
변수 초기화
변수명 = 값;
Dart
복사
변수 선언 및 초기화
var 변수명 = 값;
Dart
복사
타입
데이터(값)의 형태
종류 | 타입 키워드 | 설명 |
숫자형 | int | 정수형 데이터를 나타냅니다. |
- | double | 부동 소수점 숫자(실수)를 나타냅니다. |
- | num | int, double 의 상위 타입 |
문자형 | String | 문자열을 나타냅니다. |
불리언 | bool | 참(true) 또는 거짓(false) 값을 나타냅니다. |
추론형 | var | 변수를 선언할 때 초기값에 따라 타입을 추론합니다. |
- | dynamic | 모든 데이터 타입을 가질 수 있는 동적 타입입니다. |
컬렉션 | List | 순서가 있는 리스트(배열)를 나타냅니다. |
- | Set | 중복되지 않는 항목들의 집합을 나타냅니다. |
- | Map | 키-값 쌍으로 이루어진 맵(딕셔너리)을 나타냅니다. |
타입 계층
Null Safety
변수나 객체가 null 값을 가질 수 있는지 여부를 명시적으로 관리하여 null 참조 오류를 방지하는 기능
•
널 허용 타입 (Nullable types)
•
Null 체크
•
late 키워드
널 허용 타입 (Nullable types)
타입? - 타입 뒤에 ? 를 붙이면 해당 변수나 객체가 null 값을 가질 수 있음을 의미합니다.
int? nullIntNumber;
String? nullString;
Dart
복사
Dart 2.12 버전 이후에는 널 안전성을 강화하기 위해 타입 뒤에 ?를 사용하여 널 허용 타입을 지원합니다.Null 체크
nullable 타입의 변수를 사용할 때는 null 체크를 해야 합니다.
flutter 에서는 널 허용 타입을 Null 체크 하지 않고 접근하면 “컴파일 에러” 가 발생합니다.•
Null 체크 예시
String? name;
if (name != null) {
print(name.length); // 안전하게 name을 사용할 수 있음
}
Dart
복사
•
?? (null 병합 연산자): null 값을 대체할 기본값을 제공할 수 있습니다.
String? name;
String displayName = name ?? 'Guest';
Dart
복사
•
?. (null-aware 접근 연산자): 객체가 null이 아닌 경우에만 해당 멤버에 접근합니다.
String? name;
print(name?.length);
Dart
복사
•
??= (null 병합 할당 연산자): 변수가 null인 경우에만 값을 할당합니다.
String? name;
name ??= 'Guest';
Dart
복사
late 키워드
late int lateNumber;
Dart
복사
late 키워드는 변수의 초기화를 나중에 하겠다고 선언합니다.
•
비동기 통신을 통해서 서버로부터 데이터를 받아 올 것이 확정되어 있는 경우에 주로 사용
상수
const | final | |
선언 시점 | 컴파일 타임 상수 | 런타임 상수 |
값 할당 | 선언 시에만 값 할당 가능 | 선언 후에 값 할당 가능 |
할당 가능 여부 | 컴파일 타임에 결정된 값만 가능 | 런타임에 결정된 값 할당 가능 |
활용 예시 | 상수 문자열, 숫자 등 리터럴 값 사용 | 설정 후 변경하지 않아야 하는 값 지정 |
연산자
기본 연산자
연산자 | 설명 | 예시 |
+ | 더하기 | a + b |
- | 빼기 | a - b |
* | 곱하기 | a * b |
/ | 나누기 | a / b |
% | 나머지 | a % b |
++ | 증가 | a++ 또는 ++a |
-- | 감소 | a-- 또는 --a |
+= | 더하고 할당 | a += b |
-= | 빼고 할당 | a -= b |
*= | 곱하고 할당 | a *= b |
/= | 나누고 할당 | a /= b |
%= | 나머지를 계산하고 할당 | a %= b |
타입 연산자
연산자 | 설명 | 예시 |
as | 타입 변환 | var x = a as int |
is | 타입 체크 | if (x is int) |
is! | 타입이 아닌지 체크 | if (x is! String) |
Null 연산자
연산자 | 설명 | 예시 |
?? | null일 때 기본값 설정 | var y = x ?? defaultValue |
?. | null 체크 후 접근 | var length = str?.length |
??= | null일 때만 값 할당 | a ??= b |
! | Non-null 단언 연산자 | a! |
•
?? 연산자는 왼쪽 피연산자가 null이 아니면 왼쪽 값을, null이면 오른쪽 값을 반환합니다.
•
?. 연산자는 좌변이 null이면 무시하고 오른쪽 피연산자에 접근하지 않습니다.
•
??= 연산자는 왼쪽 피연산자가 null이면 오른쪽 값을 왼쪽 변수에 할당하고, 그렇지 않으면 왼쪽 값은 변경되지 않습니다.
•
! 연산자는 Non-null 단언 연산자로, 변수가 null이 아님을 단언합니다. 사용 시 주의가 필요하며, null일 경우 예외가 발생할 수 있습니다.
제어문
•
조건문
•
반복문
조건문
•
if-else
int x = 10;
if (x > 0) {
print('양수입니다.');
} else if (x < 0) {
print('음수입니다.');
} else {
print('0입니다.');
}
Dart
복사
•
switch
String fruit = 'apple';
switch (fruit) {
case 'apple':
print('사과입니다.');
break;
case 'banana':
print('바나나입니다.');
break;
default:
print('알 수 없는 과일입니다.');
}
Dart
복사
반복문
•
for
for (int i = 1; i <= 5; i++) {
print('현재 숫자는 $i입니다.');
}
Dart
복사
•
while
int count = 0;
while (count < 3) {
print('카운트: $count');
count++;
}
Dart
복사
•
do-while
int num = 5;
do {
print('숫자: $num');
num--;
} while (num > 0);
Dart
복사







