파파비의 블로그

플러터, flutter) Provider - of.context 대신 Consumer 사용하기 본문

개발/flutter

플러터, flutter) Provider - of.context 대신 Consumer 사용하기

N. Dave 2020. 6. 8. 11:05
반응형

 

of.context와 Consumer는 성능상으로 완전히 똑같다.

다만 Consumer는 사용하기에 따라 of.context보다 더 퍼포먼스를 높일 수도 있다.

 

of.context를 사용하고, notifyLisiteners() 가 실행되면 

of.context를 사용하는 위젯 전체가 rebuild된다.

 

Consumer는 해당 위젯에서 일부부만 rebuild되도록 설정할 수 있는 것이다.

 

만약에 큰 위젯이 존재하면, 따로 쪼개서 of.context를 사용하던가

or 

Consumer를 사용해서 해당 부분만 rebuild되게 하면 되는 것이다.

 

아니면 해당 위젯 전체는 한번만 읽어들인 뒤,

나머지 일부분만 rebuild 되게 하려면

 

of.context로 한 뒤에 listen: false 로 구독은 취소해두고,

일부분만 Consumer를 사용하면 된다.

 

 

 

정확히 사용하는 방법은,

이런식으로 원하는 위젯 위에 Consumer<T>로 감싼 뒤에,

builder의 return값을 통해 원하는 위젯을 연결시키면 된다.

 

인수는 3개, context, product, child인데, 

context는 뭐 context인 것이고,

product(2번째 인수)는 우리가 공유하는 provider 객체를 의미한다.

 

그리고 child가 조금 생소한데 child는 다시 rebuild되지 않는 부분을 의미한다.

만약 builder의 return 위젯이 rebuild 될 때, rebuild될 필요가 없는 위젯이 존재한다면,

Consumer의 child 속성이 있다. 거기에 위젯을 등록해두면 되고,

builder에서는 child를 통해 레퍼런스를 가져갈 수 있다.

 

그러니까 한 마디로 조금의 성능 향상을 볼 수 있는 것이다.

rebuild 될 때 마저 꼭 rebuild 할 필요가 없는 위젯들은 child속성에 따로 떼어놓고 레퍼런스로 사용하란 뜻이다.

 

이 child 부분은 다시 해당 위젯을 따로 쪼개서 + of.context로도 구현 가능한 부분

단지 우리가 어떻게 사용하느냐의 문제이다.

 

반응형
Comments