اليوم، سأشرح استخدام Scaffold في فلاتر Flutter. يمكن استخدام Scaffold في تطوير تطبيقات أجهزة الموبايل باستخدام Flutter و Dart. لا أقصد هذا بطريقة حرفية، ولكن Scaffold ضرورية للغاية عند إنشاء واجهة المستخدم الخاصة بك باستخدام Flutter SDK.
مفهوم استخدام Scaffold في فلاتر
عندما نتحدث عن Scaffold في غرفة مع الناس العاديين، من الممكن أن يعتقدوا أنها سقالات تستخدم للمباني. ومع ذلك، فإن فهم مفاهيم السقالات في البناء والتشييد يمكن أن يساعدنا على فهم أفضل ل Scaffold في فلاتر.
وفقًا لـ Wikipedia، فإن السقالة “هي هيكل مؤقت يستخدم لدعم طاقم العمل والمواد للمساعدة في بناء وصيانة وإصلاح المباني والجسور وجميع الهياكل الأخرى التي من صنع الإنسان”.
في تطوير تطبيقات أجهزة الموبايل باستخدام Flutter، تطبق فئة Scaffold بنية التخطيط المرئي لتصميم المواد الأساسية.بعبارات أبسط، تشبه Scaffold هيكلًا محددًا بواسطة إطار عمل (Flutter) يحتوي على العناصر الأساسية اللازمة لبناء واجهة مستخدم (UI).
تمنحنا Scaffold القدرة على إنشاء تطبيق جوال للأغراض العامة يتكون من عدة أجزاء فردية:
- AppBar راس التطبيق
- Body جسم التطبيق
- Floating Action Bar شريط الإجراءات العائم
- Bottom Navigation Bar شريط التنقل السفلي
عند استخدامها معًا، يمكن أن تكون هذه العناصر الفردية قوية لبناء وصياغة واجهة مستخدم فعالة ولكنها ممتعة من الناحية الجمالية.
“اقرأ أيضًا: الفرق بين MVC و MVVM في فلاتر“
شرح مكونات Scaffold في فلاتر
يحتوي Scaffold على وظائف مختلفة من إعطاء شريط التطبيقات العلوي، والزر العائم، ولون الخلفية، وشريط التنقل السفلي، وأزرار التذييل، وجسم التطبيق. الآن، دعنا نستكشفه بشكل مفصل:
appBar
يتم عرض appBar في الجزء العلوي من Scaffold، وهو أحد المكونات الأساسية لـ Scaffold والذي بدونه تكون أداة Scaffold غير مكتملة. وهو يحدد ما يجب عرضه في الجزء العلوي من الشاشة. تتميز أداة AppBar نفسها بخصائص مختلفة مثل العنوان والارتفاع والسطوع وما إلى ذلك على سبيل المثال لا الحصر.
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Scaffold'), ),
body جسم التطبيق
body هي الخاصية الأساسية الأخرى المطلوبة عند استخدام Scaffold في فلاتر والتي تشير إلى المنطقة الواقعة أسفل شريط التطبيق appBar وخلف الزر العائم. يتم وضع أي عنصر واجهة مستخدم widget في جسم ال Scaffold في الزاوية العلوية اليسرى افتراضيًا.
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Scaffold'), ), body: Center( child: Text("This is Homepage", style: TextStyle( color: Colors.black, fontSize: 40.0, fontStyle: FontStyle.italic, ), ), ),
هنا، يتم استخدام خاصية body لعرض نص “This is Homepage”. تُستخدم أداة Center لمحاذاة النص في الوسط ويتم استخدام أداة TextStyleوالتي تمنح النص لونًا وحجمًا ونمطًا للخط. لا تقلق، لا تتعلق هذه المقالة بالأدوات Center أو Text أو TextStyle، فسيتم تغطيتها لاحقًا.
FloatingActionButton الزر العائم
FloatingActionButton هو زر يتم عرضه عائمًا فوق ال body في الركن الأيمن السفلي. إنه زر رمز دائري فوق المحتوى للترويج لإجراء أساسي في التطبيق مثل الذي يوجد في تطبيق واتساب.
@override Widget build(BuildContext context) { return Scaffold( ... floatingActionButton: FloatingActionButton( elevation: 10.0, child: Icon(Icons.add), onPressed: (){ print('I am Floating button'); } ), ); }
هنا، يتم استخدام خاصية elevation لـ FloatingActionButton والتي تعطي الظل للزر ويتم استخدام عنصر واجهة Icon لإعطاء رمز للزر. توفر خاصية onPressed رد اتصال يتم استدعاؤه عند النقر فوق الزر، عند النقر فوق الزر “I am Floating button” تتم طباعته في نافذة وحدة التحكم console.
FloatingActionButtonLocation
بشكل افتراضي، يتم وضع زر FloatingActionButton في الزاوية اليمنى السفلية من الشاشة، لذا فإن الاسم يقول FloatingActionButtonLocation يحدد موضع FloatingActionButton باستخدام الأماكن الثابتة المحددة مسبقًا مثل،
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, //centerDocked floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, //centerFloat floatingActionButtonLocation: FloatingActionButtonLocation.endDocked, //endDocked floatingActionButtonLocation: FloatingActionButtonLocation.endFloat, //endFloat
drawer
drawer عبارة عن لوحة تُعرض على جانب الbody، وغالبًا ما تكون مخفية على الأجهزة المحمولة. عادة ما يتعين على المرء التمرير من اليسار إلى اليمين أو من اليمين إلى اليسار للوصول إلى body.
يستخدم خصائص عنصر واجهة المستخدم Drawer وهو عبارة عن لوحة تنزلق أفقيًا من حافة ال Scaffold لإظهار روابط التنقل في أحد التطبيقات.
drawer: Drawer( elevation: 16.0, child: Column( children: <Widget>[ UserAccountsDrawerHeader( accountName: Text("xyz"), accountEmail: Text("xyz@gmail.com"), currentAccountPicture: CircleAvatar( backgroundColor: Colors.white, child: Text("xyz"), ), otherAccountsPictures: <Widget>[ CircleAvatar( backgroundColor: Colors.white, child: Text("abc"), ) ], ), ListTile( title: new Text("All Inboxes"), leading: new Icon(Icons.mail), ), Divider( height: 0.1, ), ListTile( title: new Text("Primary"), leading: new Icon(Icons.inbox), ), ListTile( title: new Text("Social"), leading: new Icon(Icons.people), ), ListTile( title: new Text("Promotions"), leading: new Icon(Icons.local_offer), ) ], ), ),
هنا، يتم استخدام خاصية drawer داخل ال scaffold. استخدمنا العديد من الأدوات الأخرى داخل هذا لنصنع شكلا جذابًا قليلاً ولكن لا تقلق بشأن جميع الأدوات الأخرى، حيث سيتم شرحها في هذه السلسلة.
“اقرأ أيضاً: شرح استخدام ويدجت SnackBar في فلاتر“
bottomNavigationBar
يتم استخدام bottomNavigationBar لعرض شريط تنقل أسفل ال scaffold.
bottomNavigationBar: BottomNavigationBar( currentIndex: 0, fixedColor: Colors.teal, items: [ BottomNavigationBarItem( title: Text("Home"), icon: Icon(Icons.home), ), BottomNavigationBarItem( title: Text("Search"), icon: Icon(Icons.search), ), BottomNavigationBarItem( title: Text("Add"), icon: Icon(Icons.add_box), ), ], onTap: (int index){ setState(() { _currentIndex = index; }); }, ),
EndDrawer
EndDrawer يشبه خاصية Drawer ولكن في EndDrawer يتم عرضه افتراضيًا في الجانب الأيمن من الشاشة.
“اقرأ أيضاً: شرح استخدام ويدجت AbsorbPointer في فلاتر“
backgroundColor
تحدد هذه الخاصية لون خلفية ال scaffold.
backgroundColor: Colors.white,
“اقرأ أيضاً: شرح استخدام ويدجت AnimatedList في فلاتر“
هذا هو كل ما يتعلق بالخصائص المختلفة الخاصة ب scaffold التي تمنحك نظرة عامة على عليه. كان الغرض هو التعرف على الخصائص المختلفة واستخدامها لمزيد من التفاصيل على أداة Scaffold، راجع الوثائق الخاصة بفلاتر من الموقع الرسمي.