[Flutter] ChangeNotifierProxyProvider: 이전에 정의된 다른 Provider에 의존하는 Provider 설정하기
provider package 버전 4 부터는 ChangeNotifierProxyProvider
사용 방식이 변경되었습니다. builder
대신 create
와 update
를 사용합니다.
아래 코드에서는 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 보다 우선 실행 되어야 합니다.
[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테스트