인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

lys8691님의 프로필 이미지
lys8691

작성한 질문수

Flutter로 SNS 앱 만들기

UI - State - Provider - Repository의 관계

해결된 질문

작성

·

400

0

안녕하세요. 기존에 제가 코딩할 때는 provider 파일에서 모든 동작, 상태변화를 한번에 처리했는데, 이 강좌에서는 이를 세분화하여 state, provider, repository 파일로 나눈 것 같습니다.

 

제가 초보여서 잘 모르겠지만, 플러터 업계에서는 이러한 작업패턴이 존재하는 것인가요? 정확한 명칭이 있나요? 제가 각 파일의 역할을 이해하지 못해서 구글링을 해봐도 원하는 답변을 찾을 수가 없어서 문의드립니다.

 

혹시 UI - State - Provider - Repository 관계를 개념적으로 설명해주시면 많은 도움 될 것 같습니다.

답변 1

1

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

저는 이 강의에서 파일의 구분을 크게 세 가지로 분류했습니다.

  • UI (screens 폴더)

  • Provider(proviers 폴더)

  • Repository(repositories 폴더)

UI 는 화면을 구성하고 Provider 와 통신하는 로직만을 갖습니다.
Provider 는 상태 데이터를 관리하고 Repository 와 통신하는 로직만을 갖습니다.
Repository 는 Firebase 의 각종 서비스와 작업하는 로직만을 갖습니다.

각 분류는 서로 아래와 같이 통신을 하며
UI Provider Repository
UI 와 Repository 가 Provider 를 거치지 않고 바로 통신을 하는 일은 없습니다.

이와 같은 구조로 프로젝트를 설계한 이유는 유지, 보수를 편하게 하기 위해서 입니다.
정해진 규칙에 따라 개발을 하다 보면 다소 비효율적이라고 생각할 수 있는 로직을 작성하시게 될겁니다.
하지만, 정해진 규칙에 따라 코드를 작성했기 때문에 시간이 지나서 수정을 하거나
제 3자가 코드를 작업하게 되더라도 대략적인 구조와 기능을 빠르게 파악해서 수월하게 작업을 할 수 있습니다.

말씀하신 것 처럼, provider 에 모든 기능을 포함시키면 작업을 비교적 빠르고 편하게 진행할 수는 있지만
유지, 보수가 힘들다는 단점이 있습니다. 그래서 웹 개발에 많이 사용하는 MVC2 패턴이 나오게 된거구요.
옛날에는 하나의 파일에 모든 기능을 포함시키는 MVC1 패턴을 사용했지만 유지, 보수에 시간이 걸리고
제 3자가 프로젝트에 투입 되었을 때, 프로젝트의 구조를 파악하는데 시간이 걸린다는 문제가 있어서
각 기능을 분리시킨 MVC2 (요즘에는 그냥 MVC 라고 합니다) 패턴을 사용하게 된거죠.

flutter 에는 대표적으로 MVC 나 MVVM 패턴을 많이 사용하는 것 같고 이 강의의 경우는
MVC 에 가까운 구조로 작업했습니다.

lys8691님의 프로필 이미지
lys8691
질문자

덕분에 많이 배우고 있습니다. 감사합니다!

lys8691님의 프로필 이미지
lys8691

작성한 질문수

질문하기