Menu
Coddy logo textTech

Dart 치트시트

마지막 업데이트

Hello World 및 프로그램 구조

모든 Dart 프로그램은 최상위 main 함수에서 시작합니다.

작업문법
진입점void main() { ... }
한 줄 출력print("Hello, World!");
문자열 보간print("Hi $name");
보간 안의 표현식print("Sum: ${a + b}");
주석// this is a comment
여러 줄 주석/* ... */
라이브러리 임포트import 'dart:math';
파일 실행dart run main.dart

변수 및 타입

Dart는 정적 타입이지만 var로 타입을 추론할 수 있습니다.

작업문법
추론된 변수var age = 30;
명시적 타입int age = 30;
컴파일 타임 상수const pi = 3.14;
런타임 상수final name = getName();
기본 타입int, double, String, bool
동적 타입dynamic x = 5;
타입 변환int.parse("42"), n.toString()
타입 확인x is String, x as String

널 안전성

타입은 기본적으로 널이 될 수 없으며, ?를 붙이면 null을 허용합니다.

작업문법
널 불가 (기본)int count = 0;
널 허용 타입String? name;
널 인식 접근user?.name
널 병합name ?? "default"
널 병합 대입name ??= "default";
널 아님 단언name!
지연 초기화late String value;
널 인식 스프레드[...?maybeList]

문자열

문자열은 작은따옴표, 큰따옴표, 삼중 따옴표를 지원합니다.

작업문법
길이s.length
대문자 / 소문자s.toUpperCase(), s.toLowerCase()
보간"Total: $price"
연결"foo" + "bar"
포함 여부s.contains("ell")
시작 / 끝 여부s.startsWith("he")
분할"a,b,c".split(",")
치환s.replaceAll("a", "b")
부분 문자열s.substring(0, 3)
공백 제거s.trim()

컬렉션 (List, Map, Set)

리터럴 문법을 가진 세 가지 핵심 컬렉션 타입.

작업문법
리스트 리터럴var nums = [1, 2, 3];
리스트에 추가nums.add(4);
접근 / 길이nums[0], nums.length
map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
맵 리터럴var ages = {"Ada": 30};
맵 접근ages["Ada"]
셋 리터럴var ids = {1, 2, 3};
스프레드 연산자var all = [...a, ...b];
컬렉션 if / for[if (show) 1, for (n in xs) n]

제어 흐름

조건은 괄호 안에 들어가며, switch는 패턴을 지원합니다.

작업문법
if / elseif (x > 0) { ... } else { ... }
삼항 연산자var r = x > 0 ? "pos" : "neg";
switchswitch (n) { case 1: ...; default: ... }
for 반복문for (var i = 0; i < 10; i++) { ... }
for-in 반복문for (var item in items) { ... }
forEachitems.forEach((x) => print(x));
while 반복문while (x < 100) { ... }
do-whiledo { ... } while (x < 100);
break / continuebreak;, continue;

함수

함수는 일급이며, 화살표 문법은 단일 표현식을 짧게 만듭니다.

작업문법
함수 정의int add(int a, int b) { return a + b; }
화살표 함수int square(int x) => x * x;
선택적 위치 인자void log(String m, [int? code]) { ... }
명명된 매개변수void box({int w = 0, int h = 0}) { ... }
필수 명명 인자void box({required int w}) { ... }
익명 함수var f = (x) => x * 2;
인자로 전달nums.map((n) => n * 2)
typedeftypedef IntOp = int Function(int);

클래스 및 생성자

클래스는 상태와 동작을 담고, 생성자는 여러 형태로 옵니다.

작업문법
클래스 정의class Point { int x; int y; }
생성자Point(this.x, this.y);
명명된 생성자Point.origin() : x = 0, y = 0;
인스턴스 생성var p = Point(1, 2);
메서드double dist() { ... }
게터int get area => w * h;
상속class Circle extends Shape { ... }
super 호출super(args)
추상 클래스abstract class Shape { ... }
인터페이스 구현class Dog implements Animal { ... }

비동기 (Future / async-await)

future는 나중에 사용할 수 있는 값을 나타내고, await는 그것이 완료될 때까지 멈춥니다.

작업문법
async 함수Future<int> load() async { ... }
future awaitvar data = await load();
값 반환async 함수 안의 return 42;
지연await Future.delayed(Duration(seconds: 1));
오류 처리try { await load(); } catch (e) { ... }
then 체이닝load().then((v) => print(v));
병렬 실행await Future.wait([a(), b()]);
비동기 스트림await for (var x in stream) { ... }

가장 자주 쓰는 Dart 문법을 한 페이지에 담았습니다. 이 Dart 치트시트는 언어 핵심을 위한 빠른 참조 자료입니다 - 변수와 타입, 널 안전성, 문자열, 컬렉션, 제어 흐름, 함수, 클래스, 그리고 Flutter 뒤편의 앱을 작성하는 데 쓰는 future와 async/await를 다룹니다.

여기 나오는 모든 내용은 표준 Dart이며 공식 SDK에서 실행됩니다. 필요한 것을 복사하거나, Dart 플레이그라운드에서 모든 코드를 바로 실행해 보세요 - 설치가 필요 없습니다.

Dart 치트시트 자주 묻는 질문

이 Dart 치트시트는 무료인가요?
네. 이 Dart 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 널 안전성 연산자, 컬렉션 메서드, 비동기 패턴을 찾아봐야 할 때마다 다시 방문하세요.
Dart에서 널 안전성은 어떻게 동작하나요?
Dart에서는 모든 타입이 기본적으로 널이 될 수 없습니다 - int count는 절대 null을 담을 수 없습니다. null을 허용하려면 ?를 붙이며(String? name), 그러면 컴파일러가 null 경우를 처리하도록 강제합니다. 도우미들이 이를 간결하게 해줍니다: 널 인식 접근의 ?., 대체 값의 ??, 확신할 때 값이 널이 아님을 단언하는 !. 이를 통해 null 오류를 런타임이 아닌 컴파일 시점에 잡습니다.
Future란 무엇이며 async와 await는 어떻게 동작하나요?
Future는 네트워크 호출의 결과처럼 나중에 사용할 수 있는 값을 나타냅니다. 함수에 async를 표시하면 await를 사용할 수 있는데, await는 future가 완료될 때까지 실행을 멈춘 다음 값을 줍니다 - 그래서 동기 코드처럼 위에서 아래로 읽히는 비동기 코드를 작성하게 됩니다. 오류를 처리하려면 await를 try/catch로 감싸세요.
Dart를 온라인에서 연습할 수 있나요?
네. Dart 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - SDK를 설치할 필요가 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 Dart 강좌가 널 안전성과 컬렉션부터 클래스와 async/await까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 주제(변수, 널 안전성, 제어 흐름)부터 고급 주제(클래스, future, async/await)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.
Coddy programming languages illustration

Coddy로 Dart 배우기

시작하기