클린 아키텍쳐에 대한 정의나 설명은 다른 블로그에서 잘 정리되어있기 때문에 생략!
혹시 궁금하다면 아래 참고문서에서 확인하면 좋을 것 같다
일단 도입하게된 계기는 기존 구조에서 요구사항이 점점 많아지고 유연한 변경이 어려워지게 되었고 기존 MVVM에서 클린 아키텍쳐를 적용하게 되었다
logic/
model/
services/
screen/
provider/
pages/
util/
main.dart
위와 같은 구조로 단순하게 되어있었던 구조에서 Clean Architecture를 적용해봤다.
갑자기 결론을 얘기하면 이상하게 보일 수 있는데
프로젝트가 작다면 굳이 추천하지 않는다.
근데 이런 구조로 만들면 프로젝트의 흐름을 읽기 쉬워지긴 한다고 생각한다.

위와 같은 구조로 프로젝트를 설계를 하였고
implment에선 apiService를 의존할 수 있도록 하고 usecase에선 Repository를 의존할 수 있도록 DI를 만들었다.
core/
di/
di_implment.dart
di_usecase.dart
features
home/
data/
models
repository_implments
domain/
entity
usecase
repository
presentaion/
provider
screens
main.dart
useCase의 활용을 제대로 못한 것 같았다 비즈니스 로직이 생각보다 더 복잡했을 경우에 어떤 식으로 해야할지 경험이 좀 부족했다
implments와 repository를 읽을때 구조는 알고 있어서 어디서 보는진 알겠지만 폴더가 많아지니 움직여야 하는게 많아서 좀 힘들었다. implments와 repository를 하나의 파일에서 관리했으면 어땠을까 하는 생각도 들었다.
features로 분기를 했지만 스크린만 존재하는 경우가 있었고 이런 부분은 여기에 들어가는게 맞는가? 라는 의문이 계속 생겼다.
참고 문서