مفهوم القِطَع

ولعلّه أول سؤال يراود متعلمي فلاتر الجدد , مفهوم القطع وهو أساس هذا الإطار وركن من أركان بناء التطبيقات فيه ..


اذن ما هي القطعة widget؟


مفهوم القطع في فلَتر مختلفٌ قليلاً وشاملٌ لعدّة مفاهيم ..

ولكي نشرح أكثر إن فلَتر حينما تبدأ بتنفيذ برنامج تبدأ من الدالة الرئيسية main ثم تبدأ بتشغيل التطبيق عند استدعاء دالة التشغيل runApp ومن هنا تبدأ رحلة القطع ..


حينما تبدأ تطبيقك فانت تبدأ من أول واجهة فيه والتي اعتيد أن تكون من دالة التطبيق المجرّد MaterialApp والتي تكون بداخل قطعة ثابتة أصلاً !..


ومن ثمّ ستواجهك هذه الصفحة والتي يظهر بها شريطٌ علوي App Bar مظهراً عنوان التطبيق وبداخل بنية التطبيق Body يظهر نصٌّ فيه عبارة “كم مرة ضغطت الزر:” وعلى الأسفل يظهر زرٌّ عائم Floating Button وهو الزر المقصود لحساب الضغطات..


حينما نتأمل قليلاً سنجد أن كل عنصرٍ من هذه العناصر هو قطعة بذاتها , ولو تأملنا هذه القطع أيضاً هي مجموعة في قطعة كبرى تدعى بقطعة الأساس Scaffold والتي بدورها مبنية من القطعة المتفاعلة StatefulWidget …


يبدو مفهوم القطع معقداً قليلاً اذا ما شرح على شكل نظري , ولكن في الواقع هو أسلوب سهل يجرّد التطبيق على قطع اصغر وأصغر قدر المستطاع , ويقوم على نظام التداخل بين القطع للوصول الى الشكل النهائي للتطبيق ..


ولو نظرنا قليلاً لوجدنا أن لكل قطعة من قطع الإطار الجاهزة قطعة إبناً child لها أو حتى بعض القطع تحوي عدّة ابناء children ..

تنقسم القطع إلى قسمين رئيسية قطع متفاعلة statelessWidget و قطع ثابتة statefulWidget , ولكلٌّ منهما استخدامه وعمله ولعلّنا أن نفصل في الفرق بينهما في مقالٍ منفصل..

 

 

 

عامةً هذا هو مفهوم القطع الأساسي داخل إطار فلَتر , وهو مفهومٌ من المفاهيم المجرّدة والسهلة عامةً في التعلم والإستخدام , ولعل ما يعيب هذا المفهوم هو كثرة التداخل nested بين القطع لذلك يحتاج مبرمج فلَتر إلى تعلم أساليب عديدة لاختصار الكود البرمجي للحفاظ على قرائية Readable النص البرمجي وتعقيده الزمني و المساحي Time and space complexity في أدنى مستوياته قدر الإمكان ..

Join