inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter로 SNS 앱 만들기

UI - State - Provider - Repository의 관계

해결된 질문

484

lys8691

작성한 질문수 3

0

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

 

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

 

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

flutter android firebase dart

답변 1

1

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 에 가까운 구조로 작업했습니다.

1

lys8691

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

실수로 파이어프로젝트를 삭제하여 다시 살렸는데 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