초급자 레벨
- 플러터 소개
-
플러터란 무엇인가요?
-
플러터 사용의 장점들
• 플러터 설치 및 개발 환경 설정(Windows, macOS, Linux)
• IDE 설정(VS Code, Android Studio)
- Dart 기초
• 변수와 데이터 유형
- 제어 구조 (if-else, switch-case)
- 반복문 (for, while, do-while)
- 함수
- 클래스와 객체
• 오류 처리
- 플러터 기초
• 위젯 이해
• Stateless 대 Stateful 위젯
• 기본 UI 구축
• 사용자 입력 처리
• Flutter에서 디버깅
• 핫 리로드 및 핫 리스타트
- 레이아웃 및 네비게이션
-
일반적인 레이아웃 위젯 (Container, Column, Row, Stack, ListView, GridView)
-
화면 간 이동
-
화면 간 데이터 전달
• Navigator 2.0 사용 중
중급 수준
- 상태 관리
• 상태 이해
• setState 및 Stateful 위젯
• InheritedWidget
• Provider
• Riverpod
• MobX (특정한 사용 사례에 맞는 것)
- 네트워킹
• HTTP 요청
• REST API와 함께 작업
• JSON 파싱
• 네트워크 호출에서의 오류 처리
• 로컬 저장소
• 공유 프리퍼런스
• 파일 저장소
• SQLite
• 하이브
- 파이어베이스 통합
• Firebase 인증
• Firestore 데이터베이스
• Firebase 실시간 데이터베이스
• Firebase 스토리지
• Firebase Cloud Messaging을 활용한 푸시 알림
- 고급 UI 및 애니메이션
• 사용자 정의 위젯
• 고급 레이아웃
• 애니메이션 (암시적 및 명시적)
• 제스처 감지 및 처리
• 복잡한 UI 디자인 구축
고급 레벨
- 고급 상태 관리
-
BLoC 패턴
-
Redux
-
Riverpod (고급 사용법)
• MobX (고급 사용법)
- 성능 최적화
• 앱 성능 분석 및 향상
• 효율적인 빌드 방법
-
리빌드를 줄이기
-
무거운 계산에 아이솔레이트 사용
- 고급 네트워킹
- 웹소켓
• GraphQL
• 캐싱 전략
- 테스트
• 유닛 테스트
• 위젯 테스팅
• 통합 테스팅
• 모킹 및 스텁핑
- 네이티브 통합
• Method Channels
• Writing Platform-specific Code (Android/iOS)
• Using Platform Channels to access native features
- Continuous Integration/Continuous Deployment (CI/CD)
-
CI/CD 파이프라인 설정
-
GitHub Actions, Bitrise, Codemagic과 같은 도구 사용
-
자동화된 테스팅 및 배포
- 오픈 소스 기여
• Flutter 오픈 소스 프로젝트 찾기
• 기여하기
• 자신의 패키지 만들기 및 배포하기
최종 프로젝트
- 앱 완성하기
- 앱을 계획하고 디자인하기
- 기능을 처음부터 구현하기
- 상태 관리, 네트워킹, 스토리지, Firebase 통합하기
• 앱을 철저히 테스트하기
• 앱을 플레이 스토어와 앱 스토어에 배포하기