[Flutter] Provider란

향신료·2023년 10월 20일
0

Flutter의 상태관리

목록 보기
3/4

Provider란?


Flutter의 상태 관리 패턴 중 한 가지로, 앱의 상태를 관리하고 이에 관한 위젯을 제공하는 패키지입니다.


InheritedWidget를 기반으로 앱의 상태를 위젯 트리 전체에서 공유하며, 데이터 변경 시에 해당 데이터를 사용하는 위젯에 알려줍니다.


비교적 상태 관리가 간편하기에 복잡한 상태 관리 코드를 작성하지 않아도 적은 코드로 관리가 가능합니다. 또한 특정 부분만 데이터 변경 시에 다시 업데이트 가능한 부분 업데이트를 제공하고 있습니다.






한글 깃허브 문서

Provider Github Link








📍 InheritedWidget?


위젯 트리를 통해 부모 위젯에서 자식 위젯으로 데이터 공유 및 전달이 가능한 특별한 위젯입니다.


BuildContext를 이용하여 데이터에 관한 엑서스와 트리 내 위치를 파악하며, 특정 데이터가 변경될 때 해당 데이터에 의존하는 위젯만 다시 그려지도록 성능을 최적화할 수 있습니다.


해당 위젯은 테마 혹은 언어 설정과 같이 앱 전체에서 사용되는 전역 데이터의 관리 혹은 사용자 로그인 정보, 토큰과 같은 데이터를 공유를 사용 예로 볼 수 있습니다.







Provider의 장단점


장점

  • 상태 관리가 간단하고 직관적이며, 학습 난도가 낮습니다.

  • 위젯 트리를 통해 데이터가 공유되므로 데이터 공유가 필요하다면 모든 위젯이 쉽게 접근 가능합니다.

  • 변경된 데이터만 다시 렌더링 가능하므로 성능 최적화에 도움이 됩니다.

  • Flutter 초창기부터 존재한 패키지로, 풍부한 자료와 예제들을 찾아볼 수 있습니다.


단점

  • 위젯 트리를 통해 상태 관리가 진행되므로, 앱의 규모가 커지거나 중첩적인 사용이 일어난다면 어떤 데이터가 어떤 위젯에서 사용되고 관리되는지 한 눈에 파악하기 어려울 수 있습니다.







타 상태관리 패키지와의 차이



BLoC

Provider에 비하여 학습 난도가 높으며 코드 구현량이 늘어나지만 상태별 관리가 분리되어 있어 비즈니스 로직이 명확하고, 이로 인해 모듈화 및 테스트에 이점이 존재합니다.


GetX

상태관리, 라우팅 등 통합적인 상태 관리 패키지인 GetX는 가볍고 단순한 상태 관리를 제공하는 Provider에 비하여 비교적 커버 범위가 넓으며, 데이터 변경 시 자동으로 상태가 업데이트됩니다.

profile
드문드문 기초 정보를 올리는 블로그

0개의 댓글