मैं अभी भी स्पंदन में राज्य प्रबंधन तकनीकों के आसपास मेरे सिर लपेटकर रहा हूँ और कर रहा हूँ थोड़ा कब और क्यों का उपयोग करने के बारे में उलझन में Provider.of<X>बनाम Consumer<X>। मैं दस्तावेज़ीकरण से समझता हूं (मुझे लगता है) कि जब हम इन दोनों के बीच चयन करते हैं, तो जब आप डेटा तक पहुंच चाहते हैं, तो आप Provider.of का उपयोग करेंगे, लेकिन आपको 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}');
},
),
),
);
जबकि, जहां हमें केवल यूआई के साथ पुनर्निर्माण नहीं करना चाहते हैं, हम नीचे दिए गए पैरामीटर के Provider.of<X>साथ उपयोग करना चाहते हैं :listenfalse
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हमारे पास यूआई के पुनर्निर्माण का विकल्प क्यों हैConsumer?