나는 여전히 플러터 상태의 상태 관리 기술에 대해 머리를 감고 있으며 Provider.of<X>
vs. 를 언제, 왜 사용 해야하는지 약간 혼란 스럽습니다 Consumer<X>
. 나는 이 두 가지 중에서 선택할 때 Provider.of를 사용하여 데이터에 액세스하려고하지만 UI를 변경할 필요가 없다는 것을 문서 에서 이해 합니다. 따라서 (문서에서 가져온) 다음은 데이터에 액세스하고 새 이벤트에서 UI를 업데이트합니다.
return HumongousWidget(
// ...
child: AnotherMonstrousWidget(// <- This widget will rebuild on new data events
// ...
child: Consumer<CartModel>(
builder: (context, cart, child) {
return Text('Total price: ${cart.totalPrice}');
},
),
),
);
UI를 사용하여 데이터를 다시 작성하지 않으려는 경우 다음 Provider.of<X>
과 같이 listen
매개 변수를로 설정하여 사용 false
합니다.
Provider.of<CartModel>(context, listen: false).add(item); \\Widget won't rebuild
그러나 listen
필요하지 않으므로 다음도 실행됩니다.
Provider.of<CartModel>(context).add(item); \\listener optional
따라서 몇 가지 질문이 있습니다.
- 이것은 올바른 구별하는 방법
Provider.of<X>
과Consumer<X>
. 이전은 UI를 업데이트하지 않고 후자는 업데이트합니까? - 로
listen
설정되어 있지 않으면false
위젯이 기본적으로 재 구축되거나 재 구축되지 않습니까? 어떤 경우listen
로 설정true
? - 왜
Provider.of
우리가 UI를 다시 빌드 할 수있는 옵션이Consumer
있습니까?