. 기본 개념
Flutter란?
- Google에서 개발한 UI 툴킷으로, 단일 코드베이스로 iOS, Android, 웹, 데스크탑 앱을 개발 가능.
- Dart 언어를 사용.
Dart 언어
- Flutter에서 사용하는 프로그래밍 언어.
- 주요 특징:
- 객체지향 언어
- 강타입(Static Typing) 언어
- Null Safety 지원
- JIT(개발 중 빠른 컴파일) 및 AOT(릴리스 빌드 최적화) 컴파일 지원
2. Flutter 구조 및 핵심 개념
Flutter 위젯
- Flutter는 위젯 중심 아키텍처로 작동.
- 모든 것이 위젯: 텍스트, 버튼, 레이아웃 등이 모두 위젯으로 구현.
위젯의 종류:
- StatelessWidget
- 상태가 없는 위젯.
- 한 번 생성되면 변경되지 않음.
- StatefulWidget
- 상태를 가질 수 있는 위젯.
- 상태 변경 시 setState()를 호출해 화면 갱신.
레이아웃 및 배치
- Column: 수직으로 위젯 배치.
- Row: 수평으로 위젯 배치.
- Container: 박스 스타일의 위젯으로 배경, 마진, 패딩 등을 설정.
- Stack: 위젯을 겹쳐서 배치.
기본 위젯
- Text: 텍스트 표시.
- Image: 이미지를 표시 (네트워크, 로컬 등).
- Button: 다양한 버튼 종류 제공.
- ElevatedButton, TextButton, IconButton 등.
- ListView: 스크롤 가능한 리스트.
- GridView: 격자형 레이아웃.
- Scaffold: 앱의 기본 구조 제공 (앱바, 바닥 네비게이션 포함).
3. 앱 생명주기
State Management
- 앱 상태를 관리하는 방법.
- 간단한 앱: setState 사용.
- 복잡한 앱: Provider, Riverpod, Bloc, Redux 같은 상태 관리 라이브러리 사용.
앱 생명주기 이해
- initState(): 위젯 생성 시 호출.
- dispose(): 위젯이 제거될 때 호출.
4. 주요 기능
네비게이션
- Navigator: 페이지 이동 및 스택 관리.
- push(): 새로운 화면으로 이동.
- pop(): 현재 화면 닫기.
비동기 작업
- async/await를 사용하여 비동기 작업 처리.
- 주요 비동기 API:
- Future: 한 번 실행 후 완료되는 작업.
- Stream: 지속적으로 데이터가 전달되는 작업.
데이터 처리
- 로컬 저장소:
- SharedPreferences: 간단한 키-값 데이터 저장.
- Hive: 경량 데이터베이스.
- Sqflite: SQLite 데이터베이스.
- 네트워크 요청:
- http 또는 dio 패키지를 사용.
UI 디자인
- Custom Paint: 커스텀 UI 그리기.
- Animation: 애니메이션 효과 추가.
- AnimatedContainer, FadeTransition 등.
5. 개발 도구
Flutter DevTools
- 앱 디버깅 및 퍼포먼스 프로파일링 도구.
주요 명령어
- flutter run: 앱 실행.
- flutter build: 앱 빌드.
- flutter doctor: 환경 설정 확인.
6. 테스트 및 배포
테스트
- Unit Test: 단위 테스트.
- Widget Test: 위젯 테스트.
- Integration Test: 통합 테스트.
배포
- Android: APK 또는 AAB 파일 생성.
- iOS: Xcode를 통해 IPA 파일 생성.
7. 유용한 Flutter 라이브러리
- UI 관련
- flutter_svg: SVG 파일 표시.
- flutter_slidable: 리스트 슬라이드 기능.
- 네트워크
- http, dio: API 요청.
- 상태 관리
- provider, riverpod, bloc.
- 로컬 저장소
- shared_preferences, hive, sqflite.
Tip:
Flutter는 핫 리로드(Hot Reload) 기능으로 코드를 수정하면 즉시 변경 사항을 확인할 수 있어 빠른 개발이 가능합니다.
[ 핫 리로드? ]
Flutter의 핵심 기능 중 하나로, 앱을 다시 시작하지 않고도 코드 변경 사항을 실시간으로 반영할 수 있게 해줍니다. 이는 Flutter 개발자가 더 빠르고 효율적으로 UI를 디자인하고 기능을 개발할 수 있도록 도와줍니다.
핫 리로드의 특징
- 빠른 업데이트
- 코드 변경 사항이 즉시 앱에 반영되며, 기존 상태(state)가 유지됩니다.
- 예를 들어, 특정 화면에서 텍스트 색상을 수정한 경우 앱을 다시 시작할 필요 없이 변경 사항을 바로 확인할 수 있습니다.
- 상태 유지
- 핫 리로드는 앱의 현재 상태를 유지하면서 UI 또는 코드의 변경 사항을 업데이트합니다.
- 상태를 잃지 않으므로 디버깅 및 개발 중에 효율적입니다.
- 제한 사항
- 앱의 구조나 상태 관리와 관련된 코드가 변경된 경우에는 핫 리로드가 작동하지 않을 수 있습니다. 이때는 **핫 리스타트(Hot Restart)**가 필요합니다.
핫 리로드와 핫 리스타트의 차이
특징 | 핫 리로드 | 핫 리스타트 |
속도 | 매우 빠름 | 상대적으로 느림 |
상태 유지 | 유지됨 | 초기 상태로 재설정 |
적용 가능 코드 | UI 및 일부 논리 변경에 적용 가능 | 모든 코드 변경 사항 적용 가능 |
사용 시점 | UI 디자인 및 간단한 코드 변경 시 | 상태 초기화가 필요하거나 구조 변경 시 |
728x90