"Provider" 에 대한 오해를 해명하며 Provider 에 대한 내용을 정리해 보았다.
Flutter 개발자 사이에서 "Provider는 상태 관리 솔루션이 아니다" 라는 이야기가 나온다고 한다.
왜 이런 이야기가 나오는지, Provier 에서 Flutter 에서 어떻게 동작할지 의문이 들었다.
Provider란 Flutter 의 상태 관리 도구 중 하나로, 상태를 위젯 트리 전반에 걸쳐 공유하고 주입하는 데 사용된다.
그럼에도 불구하고, Provider가 완전한 상태 관리 솔루션으로 보지 않는 이유가 있었다.
Provider는 상태를 위젯 트리와 연결하고 변경 사항을 감지하는 도구를 제공하며 ChangeNotifier, ValueNotifier, StreamProvider 등이 있다. 이런 도구들은 상태를 관리하는 데 필요한 기능을 제공하면서도, 특정 상태 관리 방법론을 강제 하지는 않는다.
Provider는 자체적으로 특정 상태 관리 방법론을 제시하거나 강요하지 않기 때문에 Provider를 사용하여 다양한 방법으로 상태를 관리할 수 있으며, 이는 프로젝트의 요구 사항과 팀 선호도에 따라 달라진다. 따라서, Provider는 상태 관리의 한 부분을 담당하며, 상태를 효과적으로 전달하고 접근할 수 있는 도구를 제공한다.
Provider는 다른 상태 관리 패턴과 결합하여 사용할 수 있는데, 그 예로 BLoC 패턴이 있다.
이 경우 Provider는 BLoC 객체를 위젯 트리에 주입하는 역할을 한다.
그렇기 때문에 자체적으로는 특정 상태 관리 방법론을 강요하거나 제한하지 않으므로, "상태 관리 솔루션이 아니다"라는 주장이 나오는 것 같다. Provider를 사용하면 프로젝트의 요구 사항에 따라 상태 관리 전략을 설계하고 구현할 수 있으며, 필요한 경우 다른 상태 관리 패키지나 패턴과도 쉽게 결합할 수 있다.
Provider 외에도 많이 사용되는 상태 관리 방법이 있으며, 각 방법은 서로 다른 장단점을 가지고 있다. Provider는 상태 관리의 다양한 요구 사항에 유연하게 적용할 수 있는 도구로, 프로젝트의 크기와 복잡성에 따라 적합한 선택이 될 수 있다.
setState: 간단한 상태 변경에 적합한 방법으로, 상태가 변경될 때마다 위젯을 다시 빌드한다
GetX: 라우트 관리, 의존성 관리, 상태 관리 등을 제공하는 패키지로, 사용하기 쉽고 성능이 좋다.
Bloc: 이벤트와 상태 사이의 복잡한 상호 작용을 관리하는 패턴으로, 큰 프로젝트에 적합하다.
Riverpod: Provider의 창시자가 만든 상태 관리 패키지로, 더 유연하고 테스트하기 쉽다.
MobX: 반응형 프로그래밍을 기반으로 하는 상태 관리 라이브러리로, 복잡한 상태 관리를 필요로 하는 큰 프로젝트에 적합하다.
- 단순한 상태 관리: Provider와 함께 setState를 사용할 수 있으며, 간단한 상태 변경에 적합하다.
- 중간 규모의 프로젝트: Provider, GetX 등이 사용되며, 상태 관리가 조금 더 복잡한 경우에 적합하다.
- 큰 규모의 프로젝트: Bloc, Riverpod, MobX와 같은 방법이 있으며, 이 중 Riverpod는 Provider의 창시자가 만든 패키지로, 더 유연하고 테스트하기 쉽다.
이러한 다양한 방법 중에서도, Provider는 상태 관리의 기본적인 부분을 처리하면서도 다른 패턴과 쉽게 결합할 수 있는 유연성을 제공하므로, 많은 Flutter 개발자에게 인기 있다고 한다. 따라서 프로젝트의 요구 사항과 팀의 선호도에 따라 Provider를 활용하여 효과적인 상태 관리 전략을 구축하는 것이 좋아 보인다.
'Programming > 플러터 (Flutter)' 카테고리의 다른 글
[Flutter] - Flutter 앱의 상태 관리 Provider 응용하기 (0) | 2023.08.08 |
---|