Flutter team에서도 추천했었고 많이 사용하는 State management중 하나인 Provider에 대해서 알아보겠습니다.
Provider는 data를 저장하고 있는 어떤 공간(data container, data Provider)을 app에 attach하면서 시작합니다. Provider를 어떤 widget에 연결하면 해당 widget의 모든 child widget들에게 그들의 Constructor가 아닌 Listener를 이용하여 data를 전달 할 수 있습니다.
Provider는 data가 필요한 widget과 완전히 다른 widget에 연결된 data container간의 직접적인 communication channel을 설정합니다.
Listener가 연결된 widget들은 Provider안에 있는 state가 변경되면 build method를 호출합니다.
위의 그림의 예시에서는 만약, 주황색 Provider의 어떤 state가 변경되었을때, 모든 widget를 rebuild 하는것이 아니라 listener가 연결되어 있는 가장 아래에 있는 widget만 build method를 호출합니다.
Provider는 여러 개를 사용할 수 있습니다. 여러 Provider를 서로 다른 widget이나 동일한 widget과 연결할 수 있습니다.