مقدمة في Flutter وتثبيته
هل فكرت يوماً كيف تُصنع التطبيقات التي تستخدمها على هاتفك؟ في الماضي كان عليك أن تتعلم لغتين مختلفتين: واحدة لأندرويد وأخرى لـ iPhone. مع Flutter تكتب الكود مرة واحدة ويعمل على الاثنين. في هذا الدرس ستتعرف على Flutter وفكرته الأساسية، وتثبّته على جهازك، وتلقي نظرة على أول تطبيق.
ما هو Flutter؟
Section titled “ما هو Flutter؟”Flutter إطار عمل (Framework) مجاني ومفتوح المصدر من Google، لبناء تطبيقات جميلة وسريعة. صدرت نسخته المستقرة الأولى عام 2018، وأصبح اليوم من أشهر أدوات بناء التطبيقات في العالم.
بكود واحد تستطيع بناء تطبيقات تعمل على:
- أندرويد و iOS (iPhone و iPad).
- الويب.
- سطح المكتب: ويندوز وماك ولينكس.
تخيّل أنك تكتب رسالة واحدة، ومترجم ذكي يحوّلها تلقائياً إلى كل اللغات التي يفهمها أصدقاؤك. هذا ما يفعله Flutter مع أنظمة التشغيل.
ويُكتب الكود في Flutter بلغة Dart. إذا لم تتعلمها بعد، ننصحك بأن تبدأ بكورس Dart أولاً.
الفكرة الأساسية: كل شيء Widget
Section titled “الفكرة الأساسية: كل شيء Widget”في Flutter، كل شيء تراه على الشاشة هو Widget (عنصر واجهة): النص Widget، والزر Widget، والصورة Widget، وحتى المسافات والترتيب.
تخيّل الـ Widgets مثل قطع الليجو: قطع صغيرة بسيطة، تركّبها داخل بعضها لتبني شيئاً كبيراً ومعقداً. شاشة التطبيق كلها عبارة عن «شجرة» من الـ Widgets داخل بعضها:
MaterialApp └─ Scaffold └─ Center └─ Text("مرحباً")MaterialApp: التطبيق كله.Scaffold: هيكل الشاشة (مثل الإطار الأساسي).Center: يضع ما بداخله في المنتصف.Text: يعرض نصاً.
أول تطبيق Flutter
Section titled “أول تطبيق Flutter”هذا تطبيق كامل يعرض جملة في منتصف الشاشة:
import 'package:flutter/material.dart';
void main() { runApp(const MyApp());}
class MyApp extends StatelessWidget { const MyApp({super.key});
@override Widget build(BuildContext context) { return const MaterialApp( home: Scaffold( body: Center( child: Text('مرحباً بك في Flutter!'), ), ), ); }}لا تقلق إن بدا الكود غريباً، فهذه أول نظرة فقط. لاحظ الأفكار الكبيرة:
import: نستورد مكتبة Material التي فيها الـ Widgets الجاهزة.main: نقطة البداية كما في Dart، وتستدعيrunAppلتشغيل التطبيق.MyApp: أول Widget نصنعه بأنفسنا.build: دالة تبني ما يظهر على الشاشة وتُرجعه.- لاحظ كيف يتداخل كل Widget داخل الذي قبله عبر
homeوbodyوchild، تماماً مثل شجرة الليجو التي رأيناها.
سنشرح كل جزء من هذا الكود بالتفصيل في الدروس القادمة.
تثبيت Flutter
Section titled “تثبيت Flutter”خطوات التثبيت باختصار (راجع دائماً الموقع الرسمي flutter.dev لأن الخطوات قد تتغير):
- نزّل Flutter SDK من الموقع الرسمي لنظام تشغيلك، وفك الضغط في مجلد بسيط المسار مثل
C:\flutter(تجنّب المسارات التي فيها مسافات أو حروف عربية). - أضف مجلد
flutter\binإلى متغير البيئة PATH حتى تعمل أوامرflutterمن أي مكان. - ثبّت Android Studio لتحصل على أدوات أندرويد ومحاكي هاتف (Emulator). أما تطوير تطبيقات iPhone فيحتاج إلى جهاز ماك.
- ثبّت VS Code وإضافة Flutter فيه، لتكتب الكود بسهولة.
فحص التثبيت
Section titled “فحص التثبيت”افتح الطرفية واكتب:
flutter doctorهذا الأمر مثل الطبيب: يفحص جهازك ويخبرك بما هو جاهز (علامة ✓) وما ينقصه (علامة ✗) مع نصائح لإصلاحه. لا تبدأ مشروعك حتى تصلح الأخطاء المهمة.
إنشاء وتشغيل مشروع
Section titled “إنشاء وتشغيل مشروع”flutter create my_appcd my_appflutter runالأمر الأول ينشئ مشروعاً جاهزاً بكل الملفات، والأخير يشغّله على المحاكي أو هاتفك المتصل بالكمبيوتر.
جرّب بنفسك
Section titled “جرّب بنفسك”بعد تثبيت Flutter وإنشاء مشروع بـ flutter create:
- افتح الملف
lib/main.dartواستبدل محتواه بكود التطبيق الموجود في هذا الدرس. - شغّل التطبيق بـ
flutter run. - غيّر النص داخل
Textإلى اسمك، واحفظ الملف، وشاهد Hot Reload يعمل.
إذا لم يكن جهازك جاهزاً بعد، جرّب الكود على موقع DartPad (dartpad.dev) الذي يدعم Flutter أيضاً.
أخطاء شائعة
Section titled “أخطاء شائعة”- مسار تثبيت فيه مسافات أو حروف عربية: يسبب مشكلات غريبة. ثبّت Flutter في مسار بسيط مثل
C:\flutter. - تجاهل نتائج flutter doctor: اقرأ كل علامة ✗ وأصلحها قبل أن تبدأ.
- البدء بـ Flutter قبل Dart: ستشعر بالتوه. تعلّم أساسيات Dart أولاً.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما الميزة الأساسية لـ Flutter؟
Flutter يسمح ببناء تطبيقات لعدة منصات من نفس الكود.
سؤال
ما الأمر الذي يفحص تثبيت Flutter ويخبرك بما ينقص؟
flutter doctor يفحص كل الأدوات المطلوبة ويقترح حلولاً للمشكلات.
الخلاصة
Section titled “الخلاصة”- Flutter إطار عمل من Google لبناء تطبيقات لعدة منصات من كود واحد بلغة Dart.
- كل شيء في الواجهة Widget، والشاشة شجرة من الـ Widgets داخل بعضها.
- التطبيق يبدأ من
mainالتي تستدعيrunApp. flutter doctorيفحص التثبيت، وflutter createينشئ مشروعاً، وflutter runيشغّله.- Hot Reload يعرض تعديلاتك فوراً دون إعادة تشغيل التطبيق.