بناء أول واجهة: استخدام Scaffold و AppBar و Container
اليوم سنتعلم أساسيات بناء واجهة مستخدم في فلاتر باستخدام Scaffold و AppBar و Container. سنقوم بإنشاء تطبيق بسيط يعرض شريط عنوان ومربع ملون في المنتصف.
الخطوة 1: إعداد الهيكل الأساسي باستخدام Scaffold
Scaffold هو المكون الأساسي الذي يوفر الهيكل المرئي لتطبيقك، مثل شريط التطبيق (AppBar)، الجسم الرئيسي (body)، أزرار الإجراءات العائمة (FloatingActionButton)، وغيرها. نبدأ بإنشاء تطبيق فلاتر فارغ يحتوي على MaterialApp ثم Scaffold.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold( // Scaffold يوفر البنية الأساسية مثل شريط التطبيق والجسم
// لا يوجد AppBar أو body هنا بعد، فقط الهيكل الفارغ
),
);
}
}
ملاحظة تقنية:MaterialAppهو الـ Widget الذي يغلف تطبيقك بالكامل ويمنحه خصائص تصميم Material Design.Scaffoldهو الـ Widget الذي يستخدم داخلMaterialAppلإنشاء صفحة واحدة ذات تصميم Material Design.
الخطوة 2: إضافة شريط التطبيق (AppBar)
AppBar هو شريط العنوان الذي يظهر في الجزء العلوي من معظم تطبيقات فلاتر. يمكن أن يحتوي على عنوان، أزرار، وأيقونات. سنضيف AppBar إلى خاصية appBar في Scaffold.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar( // AppBar هو شريط العنوان أعلى التطبيق
title: const Text('تطبيقي الأول'), // عنوان يظهر في شريط التطبيق
backgroundColor: Colors.blueAccent, // لون خلفية شريط التطبيق
),
// لا يوجد body هنا بعد
),
);
}
}
ملاحظة تقنية: الخاصيةtitleفيAppBarتتوقع Widget (عادةText) وليس مجرد نص. الخاصيةbackgroundColorتسمح بتخصيص لون شريط التطبيق.
الخطوة 3: إضافة محتوى إلى الجسم (body) باستخدام Container
الآن، لنضف بعض المحتوى إلى الجزء الرئيسي من الشاشة (body). سنستخدم Container لإنشاء مربع ملون في منتصف الشاشة يحتوي على نص. Container هو Widget متعدد الاستخدامات يمكن استخدامه لتحديد الحجم، اللون، الهوامش، الحشوة، والمحاذاة.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('تطبيقي الأول'),
backgroundColor: Colors.blueAccent,
),
body: Center( // Center widget لتوسيط المحتوى في الشاشة
child: Container( // Container يستخدم لتحديد حجم ولون ومحاذاة المحتوى
width: 200, // عرض الحاوية بالبكسل المنطقي
height: 200, // ارتفاع الحاوية بالبكسل المنطقي
color: Colors.deepOrange, // لون خلفية الحاوية
alignment: Alignment.center, // محاذاة المحتوى (child) داخل الحاوية
child: const Text(
'مرحباً فلاتر!', // النص داخل الحاوية
style: TextStyle(color: Colors.white, fontSize: 20), // تنسيق النص
),
),
),
),
);
}
}
ملاحظة تقنية:Centerهو Widget مفيد جدًا لتوسيط الـ Widget التابع له (child) داخل المساحة المتاحة.Containerيمكنه احتواء Widget واحد فقط كـchild.
الكود النهائي الكامل
هذا هو الكود الكامل الذي يجمع جميع الخطوات لإنشاء تطبيقنا الأول:
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
// MaterialApp هو الـ Widget الأساسي لتطبيق فلاتر الذي يستخدم Material Design
home: Scaffold( // Scaffold يوفر الهيكل البصري الأساسي للصفحة (مثل شريط التطبيق والجسم)
appBar: AppBar( // AppBar هو شريط العنوان الذي يظهر في الجزء العلوي من الشاشة
title: const Text('تطبيقي الأول'), // عنوان التطبيق الذي يظهر في الـ AppBar
backgroundColor: Colors.blueAccent, // لون خلفية الـ AppBar
),
body: Center( // Center Widget يستخدم لتوسيط الـ Widget التابع له في منتصف الشاشة
child: Container( // Container هو Widget متعدد الاستخدامات لتحديد الحجم، اللون، الهوامش، وغيرها
width: 200, // تحديد عرض الحاوية بـ 200 بكسل منطقي
height: 200, // تحديد ارتفاع الحاوية بـ 200 بكسل منطقي
color: Colors.deepOrange, // تحديد لون خلفية الحاوية باللون البرتقالي الداكن
alignment: Alignment.center, // محاذاة المحتوى (الابن) داخل الحاوية في المنتصف
child: const Text( // Text Widget لعرض النص داخل الحاوية
'مرحباً فلاتر!', // النص المراد عرضه
style: TextStyle( // تنسيق النص
color: Colors.white, // لون النص أبيض
fontSize: 20, // حجم الخط 20
),
),
),
),
),
);
}
}
النتيجة المتوقعة
عند تشغيل هذا الكود، سيظهر لك تطبيق فلاتر بسيط يحتوي على شريط عنوان أزرق اللون يحمل النص "تطبيقي الأول". في منتصف الشاشة، ستجد مربعًا برتقاليًا بحجم 200x200 بكسل، وفي وسطه نص أبيض مكتوب عليه "مرحباً فلاتر!".