1 - Scaffold 

يعتبر عنصر Scaffold  العنصر الأول في أي واجهة بصرية في التطبيق وهو يستخدم تخطيط Material Design  للواجهة 

Flutter Scaffold

من خلال Scaffold يمكنك تصميم الصفحة بكل سهولة عبر التخطيط المسبق للواجهة حيث يحوي عدة خصائص أساسية أهمها : 

AppBar  يستخدم كلاس  PreferredSizeWidget وهو الشريط العلوي للنافذة يمكن أن يحوي اسم التطبيق أو أيقونات للوصول السريع أو زر القائمة ,
ويتضمن زر الرجوع للخلف في النوافذ التي لا تحوي زر قائمة .

Drawer يستخدم كلاس Drawer وهو القائمة الجانبية للتطبيق , تفتح عند الضغط على أيقونة القائمة في  الشريط العلوي أو يمكن استدعاؤها بشكل برمجي .

backgroundColor : وهو لون خلفية ال Scaffold ويأخذ قيمة لون .

floatingActionButton : يستخدم كلاس Widget وهو الزر العائم الظاهر في الصورة في الأعلى يقوم بتنفيذ امر برمجي مسند له .

bottomNavigationBar : يستخدم كلاس Widget وهو الشريط السلفي للنافذة يمكن ان يحوي على أيقونات للتنقل السريع بين النوافذ .

إقرأ أيضأ شرح عنصر BottomNavigationBar

floatingActionButtonLocation : يستخدم كلاس FloatingActionButtonLocation ويحدد موقع الزر العائم  مثل : 

floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked


body : وهو ما تحتويه الصفحة من عناصر 

في المثال أدناه ستتعرف على Scaffold السهل والبسيط : 

 


class _MyStatefulWidgetState extends State {
 int _count = 0;

 @override
Widget build(BuildContext context) {
  return Scaffold(
  appBar: AppBar(
   title: const Text('Sample Code'  ),
   ),
      backgroundColor: Colors.blueGrey,

      body: Center(
        child: Text('You have pressed the button $_count times.'),
), bottomNavigationBar: BottomAppBar( shape: const CircularNotchedRectangle(), child: Container(height: 50.0), ) floatingActionButton: FloatingActionButton( onPressed: () => setState(() { _count++; }) , tooltip: 'Increment Counter', child: const Icon(Icons.add), ), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, ); }}


2 - Directionalty 

في الوضع الافتراضي يكون اتجاه عناصر الصفحة من اليسار لليمين , لكن ماذا لو أردت أن يكون الاتجاه من اليمين لليسار وخاصة عند تطويرك لتطبيق عربي ,
الحل ببساطة هو تضمين الـ Scaffold ضمن عنصر Directionalty الذي يحمل خاصية تحديد الاتجاه , مثال : 

 

 
Directionality(
       textDirection: TextDirection.ltr,
      child: Scaffold(
               body: Container()
              )
);

 

3 - SafeArea

 

مع ظهور الأشكال الجديدة للهواتف والتي تحمل تصميم النوتش , يمكن أن يغطي النوتش الشريط العلوي للتطبيق 
ولتجنب هذا الأمر يمكنك ببساطة تضمين الـ Scaffold ضمن عنصر SafeArea, مثال : 

 
SafeArea(
      child: Scaffold(
       body: Container()
      )
);

 

الخلاصة : 

تم تصميم هذه العناصر لتسهيل عملية التصميم و تم إضافة عناصر وخيارات غير محدودة للتعديل عليها واستخدامها بكفاءة عالية في إطار تصميم لواجهة التطبيق ,
طالعنا أهم العناصر التي تستخدم في أغلب التطبيق و في القسم التالي توجد مراجع مهمة لك في التعرف على كامل الخصائص المتعلقة بالـ Scaffold 

مراجع مهمة : 

Scaffold class - material library - Dart API (flutter.dev)

AppBar class - material library - Dart API (flutter.dev)

BottomNavigationBar class - material library - Dart API (flutter.dev)