[Flutter] ChangeNotifierProxyProvider: 이전에 정의된 다른 Provider에 의존하는 Provider 설정하기

in #kr3 years ago

provider package 버전 4 부터는 ChangeNotifierProxyProvider 사용 방식이 변경되었습니다. builder 대신 createupdate를 사용합니다.

아래 코드에서는 Products Provider가 Auth Provider에서 생성한 데이터 auth 전달 받아서 실행되고 있습니다. 그리고 Products Provider는 Auth Provider로 부터 auth 값을 전달받기 위해서 ChangeNotifierProxyProvider를 사용하고 있습니다.

ChangeNotifierProxyProvider의 제네릭(Generic)에는 2가지 타입이 필요합니다. 첫번째에는 다른 Provider로 부터 받는 값의 타입이고, 두번째에는 현재 ChangeNotifier 받으려는 값의 타입입니다.

그리고 위 코드를 다시 보면 ChangeNotifierProxyProvider의 create에서는 Provider를 생성하고 있지 않습니다. 그리고 update에서는 이전 data를 유지하기 위해 previousProducts.items에서 값을 받아서 받아서 전달하고 있습니다.

Auth Provider에서 auth 값이 생성되면 ChangeNotifierProxyProvider의 update가 실행됩니다. 그러면 Products Provider를 listener 하고 있던 위젯들이 모두 rebuild 됩니다.

여기서 주의해야 할 점은 반드시 의존적 Provider가 우선적으로 실행되어야 합니다. 예를 들면, Products Provider가 Auth Provider에 종속되어 있다면 Auth Provider가 Products Provider 보다 우선 실행 되어야 합니다.

Sort:  

[US$49.00](▼14%)[Nespresso]스타벅스 네스프레소 호환 캡슐 7종 / 120 캡슐 골라담기 / 20개씩 총 6종류 교차 선택 가능 / 중복 선택 가능 / 재고 확보 / 무료배송 / 개당 약 486원 최저가★

WWW.QOO10.COM

[US$48.50](▼31%)[illy]★큐텐 최저가!!★일리 100캡슐/야콥스 100캡슐/돌체구스토 108캡슐/스타벅스 120캡슐 네스프레소 호환 캡슐★무료배송★

WWW.QOO10.COM

Coin Marketplace

STEEM 0.33
TRX 0.11
JST 0.034
BTC 66579.21
ETH 3282.19
USDT 1.00
SBD 4.30