मैंने अब तक इस पर ज्यादा विचार नहीं किया है, लेकिन मैंने const के साथ और बिना उदाहरण कोड देखा है

class ScreenBuilder extends StatefulWidget {
  ScreenBuilder({ Key? key, required this.tVars, required this.randomHash, this.overrideMe = false, this.gotoSp = 0}) : super(key:key);
  final ThreadVars tVars;
  final String randomHash;
  final bool overrideMe;
  final int gotoSp;

  @override
  _ScreenBuilderState createState() => _ScreenBuilderState();

}

विशेष रूप से इस पंक्ति के बारे में बात कर रहे हैं:

  ScreenBuilder({ Key? key, required this.tVars, required this.randomHash, this.overrideMe = false, this.gotoSp = 0}) : super(key:key);

बनाम

  const ScreenBuilder({ Key? key, required this.tVars, required this.randomHash, this.overrideMe = false, this.gotoSp = 0}) : super(key:key);

यदि कोई हो तो क्या अंतर है? मेरा विजेट किसी भी क्रमपरिवर्तन में समान काम करता प्रतीत होता है

बोनस अंक के लिए, मुझे एक लेख पढ़ना याद है जिसमें उल्लेख किया गया था कि अगर मैं अपने ScreenBuilder(...) विजेट को इस तरह कॉल करता हूं: const ScreenBuilder(...) मैं कुछ प्रदर्शन सुधार देखूंगा लेकिन इसके सामने एक कॉन्स्ट डालूंगा यह निश्चित रूप से गेट्टर त्रुटियों का एक पूरा गुच्छा फेंकता है

-1
Mark 20 नवम्बर 2021, 06:14

1 उत्तर

सबसे बढ़िया उत्तर

जब आपकी सभी वर्ग संपत्तियों को final घोषित किया जाता है, तो आप अपने कंस्ट्रक्टर से पहले const कीवर्ड का उपयोग कर सकते हैं। आखिरकार, यह उन्हें भविष्य में किसी भी परिदृश्य में अपरिवर्तनीय बना देगा।

उदाहरण के लिए, यदि आप उस वर्ग का एक उदाहरण बनाते हैं, तो आप उस उदाहरण का उपयोग करके उन गुणों के मूल्य को बदलने में सक्षम नहीं होंगे।

वास्तव में, कंस्ट्रक्टर से पहले const का उपयोग प्रदर्शन को बेहतर बनाने में योगदान दे सकता है क्योंकि यह विजेट गुणों के अनावश्यक पुनर्निर्माण को रोकता है। इसके अलावा यह मेमोरी को भी बचाता है।

इस लेख को आज़माएं, बहुत अच्छी तरह से समझाया गया है। मैं यहाँ नीचे एक अंश जोड़ रहा हूँ,

तथ्य यह है कि यह स्मृति को बचाता है, कॉन्स्ट विजेट्स का एकमात्र महत्व नहीं है। क्योंकि किसी वस्तु को स्थिरांक के रूप में चिह्नित किया जाता है, स्पंदन जानता है कि पुनर्निर्माण के मामले में, उस वस्तु के पुनर्निर्माण का कोई मतलब नहीं है क्योंकि "इसे नहीं बदलना चाहिए था"। यह एक बेहतरीन प्रदर्शन को बढ़ावा देता है क्योंकि एक बार ऑब्जेक्ट बनने के बाद, ऐप के जीवनकाल में, यह वही रहेगा, और यह सिर्फ शानदार है और स्पंदन की गर्म पुनरारंभ कार्यक्षमता में भी सुधार करता है क्योंकि यह जानता है कि कहां और क्या पुनर्निर्माण करना है परिवर्तन।

1
Ratnadeep Chakraborty 20 नवम्बर 2021, 07:42