UI - State - Provider - Repository의 관계
안녕하세요. 기존에 제가 코딩할 때는 provider 파일에서 모든 동작, 상태변화를 한번에 처리했는데, 이 강좌에서는 이를 세분화하여 state, provider, repository 파일로 나눈 것 같습니다.
제가 초보여서 잘 모르겠지만, 플러터 업계에서는 이러한 작업패턴이 존재하는 것인가요? 정확한 명칭이 있나요? 제가 각 파일의 역할을 이해하지 못해서 구글링을 해봐도 원하는 답변을 찾을 수가 없어서 문의드립니다.
혹시 UI - State - Provider - Repository 관계를 개념적으로 설명해주시면 많은 도움 될 것 같습니다.
답변 1
1
저는 이 강의에서 파일의 구분을 크게 세 가지로 분류했습니다.
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 에 가까운 구조로 작업했습니다.
실수로 파이어프로젝트를 삭제하여 다시 살렸는데 profile screen이 에러입니다
0
153
1
파이어베이스 연동 중 Auth 및 ImagePicker 오류 발생, 도움 요청드립니다.
0
145
2
파이어베이스에서 실수로 강의프로젝트를 실수로 삭제하였습니다.도와주세요
0
169
2
파이어베이스 스토리지 설정에 프로젝트 업그레이드 라고 뜨는데 어떻게 하면됩니까
0
219
1
이거는 왜그렇죠
0
149
1
셋팅에 문제가생겼네요
0
142
2
마치면서 에러가 댓글가져오기와 좋아요 리스트 가져오기 에러
0
109
1
섹션15페이징기능_4프로필 화면에 페이징 적용
0
98
1
섹션15페이징기능_3좋아요 목록 화면에 페이징 적용
0
184
1
섹션14페이징기능_1게시글 목록 화면에 페이징 적용 feed_repository.dart에러
0
103
1
11셕션에서 좋아요.강의코드에서 좋아요 업데이트 문제 제대로 수정된건가요
0
122
1
12댓글화면_3댓글정보 가져오기
0
224
2
11댓글화면_댓글 정보 가져오기에서 콘솔에 commentList못찍고 있어요
0
81
1
섹션11 좋아요 목록화면에서 콘솔에서 FeedModel 데이터를 못가지고 있어요
0
89
1
섹션11 좋아요.누른 게시글 정보를 화면에표시에서 Exception 왜 발생합니까
0
146
0
Storage사용..?
0
903
2
10 게시물 화면에서 조금헷갈려서요
0
132
2
게시글 이미지 슬라이드 기능추가 carouselslider에러가 났습니다
0
144
1
섹션8 게시글 정보 화면에 표시
0
106
1
섹션8 게시글 정보가져오기
0
114
1
섹션8 게시글 정보 가져오기
0
90
1
섹션8 게시글 정보 가져오기 feedModel를 못받아오는것 같습니다.
0
123
1
메인화면에서 뒤로가기 눌렀을때 어플종료관련 건
0
182
1
섹션8 게시글 정보가져오기
0
161
2





