Search

플러터 클린 아키텍처 구조

features
도메인 이름
data
datasources
api
api_도메인이름_datasource.dart
local
local_도메인이름_datasource.dart
도메인이름_datasource_impl.dart
i_도메인이름_datasource.dart
models (모델이 DTO라고 하자)
login_model.dart (req, resp 내부 정의)
repositories
i_도메인이름_repository.dart
도메인이름_repository_impl.dart
domain
entities ( 각종 순수 엔티티들 )
user_info_entity.dart
store_entity.dart
post_entity.dart
usecase
i_도메인이름_usecase.dart
도메인이름_usecase_impl.dart
presentation
viewmodels ( 화면에 필요한 모델을 viewmodel로 칭한다 )
login_page(페이지 하나!)
sub_viewmodels
login_viewmodel.dart (화면을 위한 데이터)
login_notifier.dart
login_provider.dart
pages
login_page.dart
widgets
login_page (해당 페이지에서 만 사용하는 위젯들)
botton.dart
app_bar.dart ( 해당 도메인에서 같이 사용하는 위젯들 )

→ UI - 화면 표시 책임

→ Viewmodel - 화면 데이터

→ Notifier - 상태 업데이트

→ Usecase - 로직 처리, 모델 → 엔티티 변환

→ Repository - 데이터 요청 및 파싱, 모델 변환

→ Datasource - 데이터 요청 및 에러처리 후 ResponseModel 반환