Flutter 앱을 잘 설계하는 것은 관심사 분리(UI, 비즈니스 로직, 데이터), state 관리 접근 방식 선택, 유지보수성, 테스트 가능성, 확장성을 위한 코드 구조화를 포함합니다. 좋은 아키텍처는 앱이 커질수록 중요합니다.
관심사 분리 (계층)
앱을 명확한 책임을 가진 계층으로 분리:
PRESENTATION (UI) → 위젯/화면; 표시 + 사용자 상호작용 (비즈니스 로직 없음)
BUSINESS LOGIC → state 관리, 유스 케이스, 앱 로직 (UI와 독립)
DATA → repository, 데이터 소스(API, 로컬 DB), 모델
→ 각 계층은 하나의 책임; 하위 계층에만 의존 → 유지보수 및 테스트 가능.
흔한 아키텍처 패턴
✓ 계층형/CLEAN 아키텍처 → presentation / domain / data 계층; 의존성은 안쪽을 향함;
비즈니스 로직은 UI 및 프레임워크와 독립
✓ MVVM → View(위젯) + ViewModel(state/로직) + Model(데이터)
✓ Repository 패턴 → 데이터 접근을 추상화 (UI/로직은 데이터가 API에서 오는지 캐시에서
오는지 모름) → 교체 가능, 테스트 가능
✓ state 관리(Bloc, Riverpod 등)가 로직 계층을 구조화
