मैं अभी भी स्पंदन में राज्य प्रबंधन तकनीकों के आसपास मेरे सिर लपेटकर रहा हूँ और कर रहा हूँ थोड़ा कब और क्यों का उपयोग करने के बारे में उलझन में 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>
साथ उपयोग करना चाहते हैं :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
हमारे पास यूआई के पुनर्निर्माण का विकल्प क्यों हैConsumer
?