전체 Flutter 가이드
카테고리별로 정리된 Flutter 개발 가이드
시작하기
Flutter 개발 환경 만드는 법 — SDK·IDE·에뮬레이터
SDK 설치부터 첫 앱 실행까지
Flutter SDK 설치, IDE 설정(VS Code/Android Studio), 에뮬레이터 구성까지 — 개발을 시작하기 위한 완벽한 환경 세팅 가이드
Hot Reload와 Hot Restart 차이와 쓰임새
Flutter 개발 속도를 10배 높이는 핵심 기능
코드 수정 후 1초 이내에 결과를 확인할 수 있는 Hot Reload — Flutter 개발 생산성의 핵심이자 다른 프레임워크와의 가장 큰 차별점
Flutter 배울 때 참고할만한 사이트
학습에 도움이 되는 외부 리소스 모음
Dart 언어
Dart란? Null Safety와 JIT/AOT를 갖춘 언어의 특징
Google이 만든 클라이언트 최적화 프로그래밍 언어
Dart는 모든 플랫폼에서 빠르고 안정적인 앱을 만들기 위해 Google이 설계한 객체 지향 언어입니다. 모든 것이 객체이고, 강력한 타입 시스템과 Null Safety, JIT+AOT 컴파일을 지원합니다.
Dart 기본 문법 정리 — var/final/const와 ?·!·??
main()부터 시작하는 Dart 핵심 문법
Dart 프로그램은 main()에서 시작합니다. var/final/const/late/dynamic 변수 선언, 문자열 보간, Null Safety(?/!/??), 캐스케이드(..) 연산자 등 핵심 문법을 정리합니다.
Dart 타입 시스템 — 타입 추론·캐스팅·제네릭
컴파일할 때 타입을 검사하는 정적 타입 언어
Dart는 정적 타입 언어로 컴파일 타임에 타입을 검사합니다. 타입 추론, is/as 캐스팅, 타입 프로모션, 제네릭, typedef 등 타입 시스템의 핵심을 다룹니다.
Dart 클래스 — extends·implements·with 차이
생성자 5종, 상속, 인터페이스, Mixin, 팩토리 패턴
Dart는 완전한 객체 지향 언어입니다. 5가지 생성자, extends/implements/with를 활용한 상속·인터페이스·Mixin, 팩토리 패턴으로 유연한 클래스 설계를 할 수 있습니다.
Dart List·Set·Map 차이와 고르는 법
스프레드와 컬렉션 for/if까지
Dart의 3대 컬렉션 — List(순서O, 중복O), Set(중복X, 집합 연산), Map(키-값 쌍). 스프레드 연산자, 컬렉션 for/if, 메서드 체이닝으로 강력한 데이터 처리가 가능합니다.
Dart 비동기 처리 — Future·Stream·async/await
오래 걸리는 작업에서 UI를 멈추지 않게
네트워크 요청, 파일 I/O 등 시간이 걸리는 작업에서 UI가 멈추지 않도록 처리합니다. Future(단일 결과)와 Stream(연속 이벤트), async/await로 비동기를 동기처럼 작성합니다.
Dart 예외 처리 — Exception과 Error의 차이
on·rethrow·비동기 예외까지
Dart는 Exception(복구 가능)과 Error(복구 불가)를 구분합니다. try-catch-finally, on 타입별 처리, rethrow, 비동기 예외 처리까지 정리합니다.
Dart Extension이란? 기존 클래스에 메서드를 더하는 법
String에 capitalize, int에 isPrime을 더하는 예
Extension은 원본 소스 수정이나 상속 없이 기존 클래스에 새로운 메서드·프로퍼티·연산자를 추가합니다. String에 capitalize, int에 isPrime, List에 distinct 등을 추가할 수 있습니다.
Dart Records와 패턴 매칭 쓰는 법 — 클래스 없이 값 묶기
Dart 3.0 — 다중 값 반환, 구조 분해, switch 패턴
Dart 3.0에서 도입된 Records는 클래스 없이 여러 값을 그룹화하는 불변 타입입니다. 패턴 매칭과 결합하면 switch/if-case에서 타입과 조건을 동시에 검사할 수 있습니다.
위젯 & UI
위젯 트리란? Flutter UI를 만드는 3개의 트리
Flutter UI의 근본 — 모든 것은 위젯이다
Flutter에서 버튼, 텍스트, 패딩, 정렬 모두 위젯입니다. Widget → Element → RenderObject 3개의 트리가 UI를 구성하는 원리를 이해하세요
StatefulWidget vs StatelessWidget 고르는 법
UI가 바뀌는지로 정한다
변하지 않는 UI는 StatelessWidget, 사용자 상호작용으로 변하는 UI는 StatefulWidget — 올바른 선택이 성능과 구조를 결정합니다
Flutter 레이아웃 원리 — 제약은 아래로, 크기는 위로
Row, Column, Stack, Flex로 UI 배치하기
Constraints go down, Sizes go up, Parent sets position — Flutter 레이아웃의 3대 규칙을 이해하면 모든 UI를 자유자재로 배치할 수 있습니다
상태 관리
Provider vs Riverpod — Flutter 상태 관리 고르기
InheritedWidget 래퍼와 그 후계자
Provider는 InheritedWidget의 래퍼로 간단한 상태 관리에 적합하고, Riverpod은 Provider의 후속작으로 컴파일 타임 안전성과 테스트 용이성을 제공합니다
BLoC 패턴이란? 이벤트와 상태로 UI와 로직을 나누는 법
Event → BLoC → State 단방향 흐름
Event → BLoC → State 단방향 흐름으로 비즈니스 로직과 UI를 완전히 분리합니다. 대규모 앱에서 유지보수성과 테스트 용이성이 뛰어납니다
네비게이션 & 라우팅
실전 & 배포
Flutter에서 REST API 호출하기 — http/dio와 JSON
JSON을 Dart 객체에 매핑하기
http 또는 dio 패키지로 REST API를 호출하고, JSON 직렬화/역직렬화로 Dart 객체와 매핑하는 실전 가이드
Flutter 앱 App Store·Google Play 출시 절차
서명·빌드 설정·스토어 등록·심사 대응
앱 서명, 빌드 설정, 스토어 등록, 심사 대응까지 — Flutter 앱을 iOS App Store와 Google Play에 출시하는 전체 프로세스
플랫폼 채널이란? Flutter에서 Swift/Kotlin을 호출하는 법
카메라·Bluetooth·NFC와 MethodChannel
Flutter에서 카메라, 블루투스, NFC 등 네이티브 기능이 필요할 때 MethodChannel을 통해 Swift(iOS)/Kotlin(Android) 코드와 통신하는 방법