여정
Dart 배우기
무료 인터랙티브 온라인 Dart 강의입니다. 매 레슨마다 직접 Dart 코드를 작성하면서 문법, 클래스, async/await, futures, 그리고 Flutter에 필요한 기초까지 익힙니다. async가 헷갈릴 땐 AI 힌트가 도와주고, 완주하면 무료 수료증까지 드립니다.
17,492+ 명의 codders가 등록함
- 초보자 환영
AI 코딩 도우미
실습 중심의 대화형 강의
모든 레슨에 음성 나레이션 제공
지식을 확인하는 퀴즈
무료 수료증
커리큘럼
섹션 1
기초
섹션 시작하기시작펼치기접기필수 개념과 기본 기술로 튼튼한 기반을 구축하세요Dart 소개
4 개 강의224- 01Dart란?챌린지
- 02main 함수퀴즈
- 03출력하기챌린지퀴즈
- 04코드 주석퀴즈
변수와 기본 데이터 타입
11 개 강의1075- 01변수는 무엇인가?퀴즈
- 02문자열챌린지퀴즈
- 03정수 (int)챌린지퀴즈
- 04실수 (double)챌린지퀴즈
- 05불리언 (bool)챌린지퀴즈
- 06'var'를 사용한 타입 추론챌린지퀴즈
- 07final 변수챌린지퀴즈
- 08상수 변수챌린지퀴즈
- 09명명 규칙챌린지퀴즈
- 10기본 Null 안전성챌린지퀴즈
- 11복습 - 변수 선언챌린지
연산자 1부
6 개 강의638- 01산술 연산자챌린지퀴즈
- 02정수 나눗셈챌린지퀴즈
- 03나머지 연산자챌린지퀴즈
- 04증가와 감소챌린지퀴즈
- 05대입 단축챌린지퀴즈
- 06복습 - 간단한 계산챌린지
연산자 2부
6 개 강의636- 01비교 연산자챌린지퀴즈
- 02논리 AND챌린지퀴즈
- 03논리 OR챌린지퀴즈
- 04논리 NOT챌린지퀴즈
- 05타입 테스트 연산자챌린지퀴즈
- 06복습 - 비교하기챌린지
연산자 파트 3
3 개 강의320- 01널 인식 연산자챌린지퀴즈
- 02널 인식 접근챌린지퀴즈
- 03조건부 연산자챌린지퀴즈
제어 흐름 - 의사 결정
6 개 강의636- 01'if' 문챌린지퀴즈
- 02'else' 문챌린지퀴즈
- 03'else if' 문챌린지퀴즈
- 04복습 - 간단한 결정챌린지
- 05중첩된 'if' 문챌린지퀴즈
- 06'switch' 문챌린지퀴즈
문자열 다루기
5 개 강의538- 01문자열 연결챌린지퀴즈
- 02문자열 보간챌린지퀴즈
- 03여러 줄 문자열챌린지퀴즈
- 04문자열 속성챌린지퀴즈
- 05기본 문자열 메서드챌린지퀴즈
제어 흐름 - 반복문
6 개 강의637- 01'for' 반복문챌린지퀴즈
- 02'while' 반복문챌린지퀴즈
- 03'do-while' 반복문챌린지퀴즈
- 04반복문에서의 'break' 사용챌린지퀴즈
- 05반복문에서의 'continue' 사용챌린지퀴즈
- 06복습 - 코드 반복챌린지
컬렉션 - 리스트 기초
8 개 강의759- 01리스트란 무엇인가?퀴즈
- 02리스트 생성하기챌린지퀴즈
- 03인덱스로 접근하기챌린지퀴즈
- 04리스트 길이 구하기챌린지퀴즈
- 05요소 추가하기챌린지퀴즈
- 06요소 제거하기챌린지퀴즈
- 07리스트가 비어 있는지 확인하기챌린지퀴즈
- 08리스트 순회하기챌린지퀴즈
컬렉션 - 맵 기본
8 개 강의757- 01맵이란?퀴즈
- 02맵 생성하기챌린지퀴즈
- 03키로 값 접근하기챌린지퀴즈
- 04키-값 쌍챌린지퀴즈
- 05맵 크기 구하기챌린지퀴즈
- 06키 가져오기챌린지퀴즈
- 07값 가져오기챌린지퀴즈
- 08키 존재 확인하기챌린지퀴즈
함수 기초
8 개 강의753- 01함수란 무엇인가?퀴즈
- 02기본 함수 정의하기챌린지퀴즈
- 03함수 호출하기챌린지퀴즈
- 04매개변수를 가진 함수챌린지퀴즈
- 05값을 반환하는 함수챌린지퀴즈
- 06'void' 키워드챌린지퀴즈
- 07화살표 구문챌린지퀴즈
- 08복습 - 간단한 함수챌린지
고급 함수
5 개 강의532- 01선택적 위치 매개변수챌린지퀴즈
- 02키워드 매개변수챌린지퀴즈
- 03필수 키워드 매개변수챌린지퀴즈
- 04기본 매개변수 값챌린지퀴즈
- 05복습 - 함수 매개변수챌린지
널 안전성 심화
6 개 강의639- 01널 이해하기챌린지퀴즈
- 02널 가능 타입챌린지퀴즈
- 03널 불가능 타입챌린지퀴즈
- 04널 단언 연산자챌린지퀴즈
- 05지연 초기화챌린지퀴즈
- 06복습 - 안전한 널 처리챌린지
형 변환
4 개 강의430- 01String을 int로 변환챌린지퀴즈
- 02String을 double로 변환챌린지퀴즈
- 03숫자를 String으로 변환챌린지퀴즈
- 04변환 오류 처리챌린지퀴즈
프로젝트: 간단한 계산기
프로젝트5 개 강의1- 01설정하기챌린지
- 02숫자 선언하기프로젝트
- 03연산 생성하기프로젝트
- 04계산 수행하기프로젝트
- 05결과 표시하기프로젝트
기초 챌린지
3 개 강의3- 01챌린지: 계산 목록챌린지
- 02챌린지: 숫자들의 합챌린지
- 03챌린지: 곱 찾기챌린지
섹션 2
로직 & 흐름
섹션 시작하기시작펼치기접기데이터 구조와 흐름 제어에 초점을 맞춘 고급 Dart 프로그래밍을 마스터하세요. 복잡한 배열, 컬렉션, 오류 처리 및 시간 관리를 다루는 방법을 배워보세요.고급 리스트 조작
9 개 강의959- 01리스트 속성: first 및 last챌린지퀴즈
- 02리스트 상태: isEmpty 및 isNotEmpty챌린지퀴즈
- 03리스트 뒤집기챌린지퀴즈
- 04리스트에 추가: insert챌린지퀴즈
- 05리스트 요소 제거: removeWhere챌린지퀴즈
- 06리스트에서 찾기: indexOf챌린지퀴즈
- 07리스트 정렬챌린지퀴즈
- 08리스트 섞기챌린지퀴즈
- 09요약 - 리스트 정리 도구챌린지
함수형 리스트 연산
7 개 강의746- 01'map'으로 변환하기챌린지퀴즈
- 02'where'로 필터링하기챌린지퀴즈
- 03'.toList()' 사용하기챌린지퀴즈
- 04'any'로 조건 확인하기챌린지퀴즈
- 05'every'로 조건 확인하기챌린지퀴즈
- 06'firstWhere'로 찾기챌린지퀴즈
- 07요약 - 데이터 필터링챌린지
세트
9 개 강의864- 01세트란 무엇인가요?퀴즈
- 02세트 만들기챌린지퀴즈
- 03세트 요소 추가 및 삭제챌린지퀴즈
- 04세트 내 요소 확인하기챌린지퀴즈
- 05리스트를 세트로 변환하기챌린지퀴즈
- 06합집합챌린지퀴즈
- 07교집합챌린지퀴즈
- 08차집합챌린지퀴즈
- 09요약 - 고유한 게스트 명단챌린지
고급 Map 조작
7 개 강의745- 01Map 순회하기챌린지퀴즈
- 02키와 값 확인하기챌린지퀴즈
- 03Map 속성: keys 및 values챌린지퀴즈
- 04조건부 추가: putIfAbsent챌린지퀴즈
- 05Map에서 항목 삭제하기챌린지퀴즈
- 06중첩된 Map챌린지퀴즈
- 07복습 - 인벤토리 업데이트챌린지
프로젝트: 쇼핑 카트 계산기
프로젝트5 개 강의1- 01프로젝트 설정챌린지
- 02장바구니에 항목 추가하기프로젝트
- 03총 비용 계산하기프로젝트
- 04할인 적용하기프로젝트
- 05최종 영수증 표시하기프로젝트
기초 예외 처리
6 개 강의541- 01예외란 무엇인가요?퀴즈
- 02'try-catch' 블록챌린지퀴즈
- 03'on'을 사용한 예외 처리챌린지퀴즈
- 04'finally' 블록챌린지퀴즈
- 05예외 던지기챌린지퀴즈
- 06요약 - 안전한 나눗셈챌린지
고급 함수
7 개 강의646- 01익명 함수챌린지퀴즈
- 02함수를 인자로 전달하기챌린지퀴즈
- 03클로저 이해하기챌린지퀴즈
- 04재귀 입문퀴즈
- 05재귀 함수: 카운트다운챌린지퀴즈
- 06재귀 함수: 팩토리얼챌린지퀴즈
- 07요약 - 리스트 프로세서챌린지
프로젝트: 간단한 텍스트 분석기
프로젝트7 개 강의18- 01프로젝트 개요 및 설정챌린지퀴즈
- 02문자 수 세기프로젝트
- 03텍스트를 단어로 분리하기프로젝트
- 04단어 수 세기프로젝트
- 05고유 단어 수 세기프로젝트
- 06단어 빈도수 계산하기프로젝트
- 07분석 결과 표시하기프로젝트
열거형 (Enums)
5 개 강의433- 01Enum이란 무엇인가요?퀴즈
- 02간단한 Enum 정의하기챌린지퀴즈
- 03변수에서 Enum 사용하기챌린지퀴즈
- 04'switch' 문에서의 Enum챌린지퀴즈
- 05요약 - 신호등챌린지
최종 챌린지
3 개 강의3- 01챌린지: 성적 정렬하기챌린지
- 02챌린지: 모음 개수 세기챌린지
- 03챌린지: FizzBuzz챌린지
섹션 3
객체 지향 프로그래밍
섹션 시작하기시작펼치기접기클래스, 객체 및 재사용 가능한 구조로 코드를 구성하는 방법을 알아보세요OOP의 기초
9 개 강의971- 01외부 파일챌린지퀴즈
- 02라이브러리와 Import챌린지퀴즈
- 03OOP 입문챌린지퀴즈
- 04클래스 vs 객체챌린지퀴즈
- 05this 키워드챌린지퀴즈
- 06메서드챌린지퀴즈
- 07인스턴스 변수챌린지퀴즈
- 08생성자 기초챌린지퀴즈
- 09복습 - 간단한 계산기챌린지
Dart의 생성자
7 개 강의753- 01기본 생성자챌린지퀴즈
- 02이름 있는 생성자챌린지퀴즈
- 03초기화 리스트챌린지퀴즈
- 04상수 생성자챌린지퀴즈
- 05팩토리 생성자챌린지퀴즈
- 06리다이렉팅 생성자챌린지퀴즈
- 07요약 - Shape Builder챌린지
클래스 속성
6 개 강의644- 01인스턴스 vs 정적 멤버챌린지퀴즈
- 02Final 및 Const 필드챌린지퀴즈
- 03Late 변수챌린지퀴즈
- 04정적 메서드 및 필드챌린지퀴즈
- 05게터와 세터챌린지퀴즈
- 06요약 - 은행 계좌 관리 프로그램챌린지
널 안정성
7 개 강의754- 01널 안정성 소개챌린지퀴즈
- 02Nullable vs Non-Nullable챌린지퀴즈
- 03? 및 ! 연산자챌린지퀴즈
- 04late 키워드와 널 안정성챌린지퀴즈
- 05널 인식 연산자챌린지퀴즈
- 06클래스에서의 널 안정성챌린지퀴즈
- 07요약 - 사용자 프로필 시스템챌린지
캡슐화
6 개 강의641- 01Public vs Private 멤버챌린지퀴즈
- 02_ 접두사 관례챌린지퀴즈
- 03라이브러리 수준의 프라이버시챌린지퀴즈
- 04Getters & Setters 심화챌린지퀴즈
- 05정보 은닉챌린지퀴즈
- 06요약 - 학생 기록챌린지
상속
7 개 강의750- 01상속의 기초챌린지퀴즈
- 02super 키워드챌린지퀴즈
- 03메서드 오버라이딩챌린지퀴즈
- 04@override 어노테이션챌린지퀴즈
- 05final 클래스 키워드챌린지퀴즈
- 06생성자와 상속챌린지퀴즈
- 07요약 - 직원 계층 구조챌린지
추상 클래스와 인터페이스
7 개 강의753- 01추상 클래스챌린지퀴즈
- 02추상 메서드챌린지퀴즈
- 03Dart의 인터페이스챌린지퀴즈
- 04암시적 인터페이스챌린지퀴즈
- 05구현 vs 확장챌린지퀴즈
- 06다중 인터페이스챌린지퀴즈
- 07요약 - 도형 계산기챌린지
믹스인
7 개 강의752- 01믹스인 소개챌린지퀴즈
- 02믹스인 생성하기챌린지퀴즈
- 03다중 믹스인 사용하기챌린지퀴즈
- 04믹스인의 on 키워드챌린지퀴즈
- 05믹스인 vs 상속챌린지퀴즈
- 06믹스인 vs 인터페이스챌린지퀴즈
- 07요약 - 동물 시스템챌린지
다형성
6 개 강의643- 01다형성 기초챌린지퀴즈
- 02인터페이스를 통한 다형성챌린지퀴즈
- 03런타임 타입 체크챌린지퀴즈
- 04is 및 as 연산자챌린지퀴즈
- 05Covariant 키워드챌린지퀴즈
- 06요약 - 결제 프로세서챌린지
컬렉션과 제네릭
7 개 강의754- 01List, Set, Map 개요챌린지퀴즈
- 02타입 안전 컬렉션챌린지퀴즈
- 03제네릭 클래스챌린지퀴즈
- 04제네릭 메서드챌린지퀴즈
- 05제네릭 제약 사항챌린지퀴즈
- 06Iterable과 Iterator챌린지퀴즈
- 07요약 - 제네릭 저장소챌린지
특수 메서드
6 개 강의643- 01toString() 오버라이드챌린지퀴즈
- 02hashCode 및 == 오버라이드챌린지퀴즈
- 03Comparable 인터페이스챌린지퀴즈
- 04call() 메서드챌린지퀴즈
- 05noSuchMethod 오버라이드챌린지퀴즈
- 06정리 - 커스텀 컬렉션챌린지
비동기 OOP
6 개 강의645- 01Future와 async/await챌린지퀴즈
- 02Stream 기초챌린지퀴즈
- 03Stream Controller챌린지퀴즈
- 04비동기 생성자챌린지퀴즈
- 05클래스 메서드에서의 비동기 처리챌린지퀴즈
- 06요약 - Data Fetcher챌린지
고급 OOP 개념
7 개 강의764- 01합성 vs 상속챌린지퀴즈
- 02확장 메서드챌린지퀴즈
- 03Callable 클래스챌린지퀴즈
- 04Sealed 클래스 (Dart 3)챌린지퀴즈
- 05레코드 (Dart 3)챌린지퀴즈
- 06패턴 및 매칭 (3.0)챌린지퀴즈
- 07메서드가 포함된 Enum챌린지퀴즈
디자인 패턴 파트 1
5 개 강의543- 01디자인 패턴 소개챌린지퀴즈
- 02싱글톤 패턴챌린지퀴즈
- 03팩토리 패턴챌린지퀴즈
- 04옵저버 패턴챌린지퀴즈
- 05전략 패턴챌린지퀴즈
디자인 패턴 파트 2
7 개 강의763- 01커맨드 패턴챌린지퀴즈
- 02어댑터 패턴챌린지퀴즈
- 03데코레이터 패턴챌린지퀴즈
- 04템플릿 메서드 패턴챌린지퀴즈
- 05상태 패턴챌린지퀴즈
- 06컴포지트 패턴챌린지퀴즈
- 07레포지토리 패턴챌린지퀴즈
프로젝트: 도서 관리 시스템
프로젝트6 개 강의1- 01프로젝트 개요챌린지
- 02도서 및 사용자 클래스프로젝트
- 03대출 시스템프로젝트
- 04검색 기능프로젝트
- 05관리자 인터페이스프로젝트
- 06테스트 및 통합프로젝트
최종 챌린지
4 개 강의4- 01이러닝 플랫폼챌린지
- 02은행 시스템챌린지
- 03게임 캐릭터 시스템챌린지
- 04차량 대여 서비스챌린지
Coddy에서 Dart을 배우는 이유
- 브라우저에서 실제 Dart 코드를 작성하고 실행하세요. Dart SDK 설치도, Flutter 툴체인 설정도 필요 없습니다. 각 레슨이 여러분의 Dart 프로그램을 서버에서 컴파일해 결과를 바로 보여줍니다.
- 실제 Flutter 개발자가 쓰는 그대로의 Dart: 변수와 타입, 제어 흐름, 함수, 클래스와 상속, 제네릭, null-safety, futures, async/await, streams. Flutter 개발자에게 꼭 필요한 Dart 기초입니다.
- AI 힌트가 정답을 알려주지 않으면서도 Dart 에러와 async 버그를 읽고 고치도록 도와주기 때문에, null-safety나 futures 같은 개념이 헷갈리지 않고 자연스럽게 이해됩니다.
- 과정을 마치면 받는 무료 Dart 수료증. Dart가 주력 언어인 Flutter 및 모바일 개발 직군에 어필할 수 있는 신뢰성 있는 증빙입니다.
Dart 학습에 대한 자주 묻는 질문
Dart는 어디에 쓰이나요?
Dart는 주로 Flutter 앱을 만드는 데 사용됩니다. Flutter는 Google의 크로스 플랫폼 UI 프레임워크로, 하나의 코드베이스로 iOS, Android, 웹, Windows, macOS, Linux를 모두 타겟팅할 수 있죠. Flutter 외에도 Dart는 커맨드라인 도구나 서버 사이드 코드 작성에도 쓰이지만, 요즘 사람들이 Dart를 배우는 가장 큰 이유는 단연 Flutter입니다.
Dart는 배우기 어려운가요?
Dart는 정적 타입 언어 중에서도 비교적 쉽게 익힐 수 있는 편입니다. 문법이 Java, JavaScript, C#을 다뤄본 사람이라면 친숙하게 느껴지고, 강력한 null-safety 덕분에 흔한 버그를 미리 막을 수 있죠. 대부분의 입문자는 첫 한 시간 안에 작동하는 Dart 프로그램을 만들고, 일주일 안에 클래스를 작성하기 시작합니다.
Flutter를 배우기 전에 Dart부터 배워야 하나요?
네 — 적어도 기초는 익히고 가세요. Dart 문법, 클래스, async/await, null-safety가 자연스럽게 느껴지면 Flutter 진도가 훨씬 빨라집니다. 이 Dart 강좌는 Flutter로 가는 발판이 되도록 설계되어 있어, 실제 Flutter 코드에서 자주 나오는 Dart 부분들을 다룹니다.
Dart을 배우는 데 얼마나 걸리나요?
Dart 기초 — 변수, 제어 흐름, 함수, 클래스 — 는 매일 연습하면 1~2주 정도 걸립니다. async/await, futures, null-safety에 익숙해지는 데는 보통 2~4주가 더 필요합니다. 그 이후에는 Flutter로 넘어가면서 필요할 때마다 Dart의 고급 기능을 함께 익혀 나갈 수 있습니다.
Dart를 온라인에서 무료로 배울 수 있나요?
네. 인터랙티브 Dart 코스는 무료입니다 — 레슨, 코딩 연습, 퀴즈, 그리고 수료증까지 포함이에요. Dart는 서버에서 컴파일되기 때문에, 실제 Dart 코드를 작성하기 위해 Dart SDK를 설치하거나 로컬에 Flutter를 세팅할 필요가 없습니다.
Dart 코스를 마치면 수료증을 받을 수 있나요?
네. Dart 코스를 완료하면 무료 수료증을 드립니다. 이력서에 추가하거나 LinkedIn에 공유할 수 있는 검증 가능한 증빙으로, 특히 Flutter 개발로 나아가는 발판으로 유용합니다.