본문 바로가기

DEVELOPE/앱제작 start

2025년 FLUTTER 기초 틀 잡기

. 기본 개념

Flutter란?

  • Google에서 개발한 UI 툴킷으로, 단일 코드베이스로 iOS, Android, 웹, 데스크탑 앱을 개발 가능.
  • Dart 언어를 사용.

Dart 언어

  • Flutter에서 사용하는 프로그래밍 언어.
  • 주요 특징:
    • 객체지향 언어
    • 강타입(Static Typing) 언어
    • Null Safety 지원
    • JIT(개발 중 빠른 컴파일) 및 AOT(릴리스 빌드 최적화) 컴파일 지원

2. Flutter 구조 및 핵심 개념

Flutter 위젯

  • Flutter는 위젯 중심 아키텍처로 작동.
  • 모든 것이 위젯: 텍스트, 버튼, 레이아웃 등이 모두 위젯으로 구현.

위젯의 종류:

  1. StatelessWidget
    • 상태가 없는 위젯.
    • 한 번 생성되면 변경되지 않음.
  2. StatefulWidget
    • 상태를 가질 수 있는 위젯.
    • 상태 변경 시 setState()를 호출해 화면 갱신.

레이아웃 및 배치

  • Column: 수직으로 위젯 배치.
  • Row: 수평으로 위젯 배치.
  • Container: 박스 스타일의 위젯으로 배경, 마진, 패딩 등을 설정.
  • Stack: 위젯을 겹쳐서 배치.

기본 위젯

  1. Text: 텍스트 표시.
  2. Image: 이미지를 표시 (네트워크, 로컬 등).
  3. Button: 다양한 버튼 종류 제공.
    • ElevatedButton, TextButton, IconButton 등.
  4. ListView: 스크롤 가능한 리스트.
  5. GridView: 격자형 레이아웃.
  6. Scaffold: 앱의 기본 구조 제공 (앱바, 바닥 네비게이션 포함).

3. 앱 생명주기

State Management

  • 앱 상태를 관리하는 방법.
    • 간단한 앱: setState 사용.
    • 복잡한 앱: Provider, Riverpod, Bloc, Redux 같은 상태 관리 라이브러리 사용.

앱 생명주기 이해

  • initState(): 위젯 생성 시 호출.
  • dispose(): 위젯이 제거될 때 호출.

4. 주요 기능

네비게이션

  • Navigator: 페이지 이동 및 스택 관리.
    • push(): 새로운 화면으로 이동.
    • pop(): 현재 화면 닫기.

비동기 작업

  • async/await를 사용하여 비동기 작업 처리.
  • 주요 비동기 API:
    • Future: 한 번 실행 후 완료되는 작업.
    • Stream: 지속적으로 데이터가 전달되는 작업.

데이터 처리

  1. 로컬 저장소:
    • SharedPreferences: 간단한 키-값 데이터 저장.
    • Hive: 경량 데이터베이스.
    • Sqflite: SQLite 데이터베이스.
  2. 네트워크 요청:
    • http 또는 dio 패키지를 사용.

UI 디자인

  • Custom Paint: 커스텀 UI 그리기.
  • Animation: 애니메이션 효과 추가.
    • AnimatedContainer, FadeTransition 등.

5. 개발 도구

Flutter DevTools

  • 앱 디버깅 및 퍼포먼스 프로파일링 도구.

주요 명령어

  1. flutter run: 앱 실행.
  2. flutter build: 앱 빌드.
  3. flutter doctor: 환경 설정 확인.

6. 테스트 및 배포

테스트

  • Unit Test: 단위 테스트.
  • Widget Test: 위젯 테스트.
  • Integration Test: 통합 테스트.

배포

  • Android: APK 또는 AAB 파일 생성.
  • iOS: Xcode를 통해 IPA 파일 생성.

7. 유용한 Flutter 라이브러리

  1. UI 관련
    • flutter_svg: SVG 파일 표시.
    • flutter_slidable: 리스트 슬라이드 기능.
  2. 네트워크
    • http, dio: API 요청.
  3. 상태 관리
    • provider, riverpod, bloc.
  4. 로컬 저장소
    • shared_preferences, hive, sqflite.

 

Tip:

Flutter는 핫 리로드(Hot Reload) 기능으로 코드를 수정하면 즉시 변경 사항을 확인할 수 있어 빠른 개발이 가능합니다.

[ 핫 리로드? ]
Flutter의 핵심 기능 중 하나로, 앱을 다시 시작하지 않고도 코드 변경 사항을 실시간으로 반영할 수 있게 해줍니다. 이는 Flutter 개발자가 더 빠르고 효율적으로 UI를 디자인하고 기능을 개발할 수 있도록 도와줍니다.

핫 리로드의 특징

  1. 빠른 업데이트
    • 코드 변경 사항이 즉시 앱에 반영되며, 기존 상태(state)가 유지됩니다.
    • 예를 들어, 특정 화면에서 텍스트 색상을 수정한 경우 앱을 다시 시작할 필요 없이 변경 사항을 바로 확인할 수 있습니다.
  2. 상태 유지
    • 핫 리로드는 앱의 현재 상태를 유지하면서 UI 또는 코드의 변경 사항을 업데이트합니다.
    • 상태를 잃지 않으므로 디버깅 및 개발 중에 효율적입니다.
  3. 제한 사항
    • 앱의 구조나 상태 관리와 관련된 코드가 변경된 경우에는 핫 리로드가 작동하지 않을 수 있습니다. 이때는 **핫 리스타트(Hot Restart)**가 필요합니다.

핫 리로드와 핫 리스타트의 차이

특징 핫 리로드 핫 리스타트
속도 매우 빠름 상대적으로 느림
상태 유지 유지됨 초기 상태로 재설정
적용 가능 코드 UI 및 일부 논리 변경에 적용 가능 모든 코드 변경 사항 적용 가능
사용 시점 UI 디자인 및 간단한 코드 변경 시 상태 초기화가 필요하거나 구조 변경 시
728x90