2017-06-05 12 views
5

setState() रखने का क्या लाभ है तुरंत इसे तुरंत कॉल करने के लिए फ़ंक्शन स्वीकार करें और फिर पुनर्निर्माण का अनुरोध करें? विशेष रूप से, उपयोगकर्ताओं को स्पष्ट रूप से "पुनर्निर्माण" प्रकार के फ़ंक्शन को कॉल करने पर क्या लाभ होता है?सेटस्टेट बंद होने का कारण क्यों है?

उत्तर

7

जब फ़्लटर के पास "मार्कनेड्सबिल्ड" फ़ंक्शन था, तो डेवलपर इसे यादृच्छिक समय पर कॉल करने के लिए बस समाप्त हो गए। जब वाक्यविन्यास setState(() { ... }) पर स्विच किया गया, डेवलपर्स को API का सही उपयोग करने की अधिक संभावना थी। वे मशीन के दृष्टिकोण से कार्यात्मक रूप से समकक्ष हैं, लेकिन वे डेवलपर्स से अलग कोड विकसित करने लगते हैं।

आप केवल एक setState बंद अंदर सदस्य चर परिवर्तनशील की परिपाटी निम्न हैं, तो आप एक स्थिति है कि आप कुछ कोड पुनर्रचना कर रहे हैं और गलती से setState करने के लिए कॉल निकाल सकते हैं या setState अनावश्यक रूप से फोन से बचने के लिए होगा। और यदि आपका State अनमाउंट किया गया है, तो Flutter एक दावे को विफल कर सकता है ताकि आपको पता चल सके कि जैसे ही आप सदस्यों को म्यूट करने की कोशिश करना शुरू कर देते हैं, अंत में।

अंततः वहाँ शायद एक analyzer warning को लागू करने कि setState हमेशा जब एक State के सदस्यों परिवर्तनशील कहा जाता है, इसलिए किसी भी सदस्य चर उत्परिवर्तन कि initState के बाहर होता है या एक setState कॉलबैक संदिग्ध के रूप में ध्वजांकित किया जाएगा किया जाएगा।

यदि आप फ्लटर में राज्य के साथ शुरुआत कर रहे हैं, तो Flutter widgets tour देखें। मैंने पाया है कि setState पर कई मामलों को FutureBuilder, StreamBuilder, AnimatedWidget, याके साथ अधिक सुंदरता से संभाला जा सकता है, इसलिए यदि आप setState पर कॉल करते हैं तो उन विकल्पों पर विचार करना न भूलें।

एडम बार्थ और यारोस्लाव वोल्विच ने इस प्रश्न/उत्तर में योगदान दिया।

संबंधित मुद्दे