728x90
MVVM 패턴과 BLoC 패턴을 결합한 Flutter 앱의 폴더 구조를 설정할 때는 모듈화와 유지보수성을 고려하여 디렉토리를 나누는 것이 중요합니다. 다음은 이러한 패턴을 고려한 권장 폴더 구조입니다.
1. 기본 폴더 구조

2. 세부 설명
core/ (핵심 파일)
앱 전반에 걸쳐 여러 화면이나 모듈에서 공통으로 사용되는 코드들을 모아둡니다. 예를 들어:
- config/: 앱의 테마, 라우팅, 환경설정 파일을 모아 둡니다.
- constants/: 앱 전반에서 사용하는 상수 값을 정의합니다. (예: API 키, URL 등)
- utils/: 공통적으로 사용되는 유틸리티 함수들이 위치합니다. (예: 문자열 변환, 날짜 포맷팅 등)
- widgets/: 재사용 가능한 공통 위젯들이 포함됩니다. (예: 커스텀 버튼, 로딩 인디케이터)
data/ (데이터 레이어)
데이터와 관련된 모든 로직을 담당합니다. 여기서 데이터는 외부 소스(예: API, 로컬 데이터베이스)로부터 가져옵니다.
- models/: 데이터 모델을 정의합니다. API에서 받은 JSON 데이터를 Dart 객체로 변환할 때 사용하는 클래스입니다.
- repositories/: 데이터에 대한 비즈니스 로직을 처리하는 곳입니다. 여러 데이터 소스(API, 로컬 데이터 등)와 상호작용을 관리합니다.
- providers/: REST API, Firebase, SQLite 등 외부 데이터 소스와 직접적으로 상호작용하는 파일들이 위치합니다.
domain/ (비즈니스 로직)
앱의 주요 비즈니스 로직이 포함됩니다. 이 레이어는 presentation/과 data/를 중개하는 역할을 합니다.
- entities/: 도메인 객체(엔터티)가 위치하며, 이는 비즈니스 로직에만 관련된 순수한 객체입니다.
- use_cases/: 비즈니스 규칙을 정의합니다. 화면과 관련 없이 순수하게 앱의 기능을 구현합니다.
- blocs/: BLoC 패턴을 위한 파일이 위치하며, 각 화면에 필요한 상태 관리 및 이벤트 처리 로직이 들어갑니다.
presentation/ (UI 레이어)
UI와 관련된 모든 코드가 모이는 디렉토리입니다.
- screens/: 각 화면별로 관련된 코드가 모여 있습니다. (예: 로그인 화면, 대시보드 화면 등)
- widgets/: 화면에서 재사용 가능한 위젯들이 포함됩니다.
- state/: Provider, ChangeNotifier, MobX 등을 사용해 UI 상태를 관리하는 코드가 들어갑니다.
- routes/: 앱의 화면 전환 및 네비게이션을 처리하는 파일이 포함됩니다.
main.dart
앱의 진입점으로, MaterialApp이나 CupertinoApp을 초기화하고 라우팅, 테마 등을 설정합니다.
728x90
'코딩 > ♠♠기술 구현' 카테고리의 다른 글
구글 맵 연동(mapid 오류상태) (0) | 2024.09.14 |
---|---|
블록 사용해서 회원가입하면 파이어스토어에 회원정보 저장하기 (0) | 2024.09.10 |
구글 로그인 (2) | 2024.09.04 |
닉네임 변경후 알림보내기 작동 순서. (0) | 2024.08.23 |
닉네임 변경후 알림 보내기(위에걸로 하기) (0) | 2024.08.23 |