اذهب إلى المحتوى
  • 0

استفسار عن const في إطار العمل flutter

Mohammed Hhhh

السؤال

Recommended Posts

  • 1

const في سياق Flutter يوصى باستخدام مُنشئ ثابت كلما أمكن ذلك عند إنشاء عناصر واجهة مستخدم Flutter. السبب هو زيادة الأداء ، حيث يمكن لـ Flutter حفظ بعض الحسابات من خلال فهم أنه يمكن إعادة استخدام هذه الأداة من إعادة رسم سابقة في الحالية ، لأنها قيمة ثابتة. فيما يلي مقال مثير جدًا للاهتمام بقلم Crizant Lai يحلل تأثير أداء استخدام عنصر واجهة مستخدم مع أو بدون مُنشئ ثابت.

أثناء الاختبار ، سأُنشئ شاشتين لعرض الشعار المتحرك ، تستخدم إحداهما المُنشئ الثابت لعنصر واجهة مستخدم الصورة:

const Image(
  width: 100,
  height: 100,
  image: AssetImage('assets/logo.png'),
)

والآخر بدون كلمة const.

يتم تغليف الشعار داخل عنصر واجهة مستخدم AnimatedPositioned ، ويتم تحديث موضعه مرة واحدة في الثانية.

ثم نقوم بتشغيل التطبيق باستخدام علامة --profile ، وفحص علامة التبويب "الأداء" و "الذاكرة" في Dart DevTools.

1*RLenUzfWlRseHv7nCrPQFg.png

  • استنتاج

يمكننا أن نرى أنه باستخدام مُنشئ ثابت ، يكون معدل الإطارات في الثانية أعلى بنسبة 8.4٪ ، واستخدام الذاكرة أقل بنسبة 20٪ تقريبًا ، في حالة 1000 شعار. على الرغم من أن الأرقام كبيرة جدًا ، إلا أن "النعومة" التي لاحظتها أثناء الاختبار متشابهة جدًا.

كما أنه من غير الواقعي وجود 1000 عنصر واجهة مستخدم في الشاشة. بالنسبة إلى التطبيق المتوسط ، لن يكون هناك سوى العشرات من الأدوات المصغّرة في كل شاشة ، ولا يحتوي سوى جزء منها على مُنشئ ثابت. إذا كنت حقًا بحاجة إلى تقديم مثل هذا العدد الكبير من الكائنات ، فمن الأفضل استخدام Canvas بدلاً من ذلك.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

const يستخدم لتعريف متغير لن تقوم بتغير قيمته بمعني أخر أذا قمت بتعريف متغير ب const لن تستطيع تغير قيمه هذا المتغير .

يستخدم حتي لايقوم المترجم بقراءة هذا المتغير في كل عملية build وهذا يساعد في تسريع البرنامج.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Mohammed Fahmy3:

const يستخدم لتعريف متغير لن تقوم بتغير قيمته بمعني أخر أذا قمت بتعريف متغير ب const لن تستطيع تغير قيمه هذا المتغير .

يستخدم حتي لايقوم المترجم بقراءة هذا المتغير في كل عملية build وهذا يساعد في تسريع البرنامج.

EdgeInsets.all(29.0)

هل رح تكون مختلفه عن الي تحت

EdgeInsets.all(33.0)

و اتنى مزيد من التوضح و شكرا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

 

بتاريخ منذ ساعة مضت قال Mohammmed Mahmoud:

EdgeInsets.all(29.0)

هل رح تكون مختلفه عن الي تحت

EdgeInsets.all(33.0)

و اتنى مزيد من التوضح و شكرا

نعم سوف تختلف القيمة لاختلاف القيمة التي تم تمريرها في كل تابع فالقيمة الأولي تساوي 29.0 والثانية تساوي 33.0 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...