إعداد Flutter والتطبيق الأول

أوامر واجهة سطر أوامر Flutter

40 دقيقة الدرس 11 من 12

واجهة سطر أوامر Flutter

واجهة سطر أوامر Flutter هي أداتك الرئيسية لإنشاء وتشغيل وبناء وإدارة مشاريع Flutter من الطرفية. إتقان هذه الأوامر سيجعلك أكثر إنتاجية بشكل ملحوظ. يجب أن يكون كل مطور Flutter مرتاحاً في العمل مع واجهة سطر الأوامر، حتى لو كان يستخدم بيئة تطوير بشكل أساسي.

ملاحظة: جميع أوامر Flutter CLI مسبوقة بـ flutter. يمكنك دائماً تشغيل flutter --help لرؤية قائمة كاملة بالأوامر المتاحة، أو flutter <command> --help للمساعدة المفصلة حول أمر محدد.

flutter create

يُنشئ أمر flutter create مشروع Flutter جديداً مع جميع الملفات وهيكل المجلدات اللازم.

إنشاء مشروع أساسي

# إنشاء مشروع Flutter جديد
flutter create my_app

# إنشاء مع منظمة مخصصة (نطاق عكسي)
flutter create --org com.example my_app

# يحدد علم --org معرّف الحزمة:
# Android: com.example.my_app
# iOS: com.example.myApp

اختيار المنصة

بشكل افتراضي، يُنشئ Flutter مشروعاً لجميع المنصات المدعومة. يمكنك تقييد هذا بعلم --platforms:

إنشاء خاص بالمنصة

# إنشاء لمنصات محددة فقط
flutter create --platforms=android,ios my_mobile_app
flutter create --platforms=web my_web_app
flutter create --platforms=windows,macos,linux my_desktop_app

# إنشاء لجميع المنصات (السلوك الافتراضي)
flutter create --platforms=android,ios,web,windows,macos,linux my_app

قوالب المشروع

يتيح لك علم -t (أو --template) اختيار أنواع مشاريع مختلفة:

قوالب المشروع

# تطبيق Flutter قياسي (افتراضي)
flutter create -t app my_app

# حزمة Flutter (مكتبة قابلة لإعادة الاستخدام)
flutter create -t package my_package

# إضافة Flutter (كود خاص بالمنصة)
flutter create -t plugin my_plugin

# إضافة Flutter مع FFI (واجهة الدوال الأجنبية)
flutter create -t plugin_ffi my_ffi_plugin

# تطبيق هيكلي (بداية معتمدة مع أفضل الممارسات)
flutter create -t skeleton my_app
نصيحة: ينشئ قالب skeleton مشروعاً بهيكل أكثر تقدماً يتضمن دعم الترجمة وتكوين السمة وشاشة إعدادات. إنه نقطة انطلاق رائعة لتطبيقات الإنتاج.

flutter run

يقوم أمر flutter run ببناء وتشغيل تطبيقك على جهاز متصل أو محاكي.

تشغيل تطبيقك

# التشغيل على الجهاز الافتراضي
flutter run

# التشغيل على جهاز محدد (استخدم flutter devices للعثور على المعرف)
flutter run -d chrome
flutter run -d emulator-5554
flutter run -d 'iPhone 15 Pro'

# التشغيل في أوضاع مختلفة
flutter run --debug      # وضع التصحيح (افتراضي) - إعادة تحميل سريع، تأكيدات
flutter run --profile    # وضع الملف الشخصي - تحليل الأداء
flutter run --release    # وضع الإصدار - محسّن، بدون تصحيح

# التشغيل على جميع الأجهزة المتصلة في وقت واحد
flutter run -d all

شرح أوضاع البناء

يحتوي Flutter على ثلاثة أوضاع بناء، كل منها يخدم غرضاً مختلفاً:

  • وضع التصحيح (--debug): إعادة التحميل السريع مفعّلة، التأكيدات نشطة، غير محسّن. الأفضل للتطوير.
  • وضع الملف الشخصي (--profile): بعض التحسينات، طبقة الأداء متاحة. الأفضل لإيجاد مشاكل الأداء.
  • وضع الإصدار (--release): محسّن بالكامل، بدون أدوات تصحيح. الأفضل للاختبار النهائي والتوزيع.
تحذير: وضع الملف الشخصي غير متاح على المحاكيات. يجب استخدام جهاز فعلي لتحليل الأداء لأن المحاكيات لا تمثل أداء الجهاز الحقيقي بدقة.

إعادة التحميل السريع وإعادة التشغيل السريع

أثناء تشغيل تطبيقك في وضع التصحيح، يمكنك استخدام اختصارات لوحة المفاتيح هذه في الطرفية:

اختصارات لوحة المفاتيح أثناء التشغيل

# أثناء نشاط flutter run في الطرفية:
r    # إعادة تحميل سريع - يطبق تغييرات الكود فوراً
R    # إعادة تشغيل سريع - يعيد تشغيل التطبيق، يعيد تعيين الحالة
p    # تبديل طبقة رسم التصحيح
o    # التبديل بين عرض Android/iOS
q    # إنهاء التطبيق
h    # عرض جميع الأوامر المتاحة
d    # فصل (يبقي التطبيق يعمل، يوقف CLI)

flutter build

يُجمّع أمر flutter build تطبيقك إلى تنسيق قابل للتوزيع للمنصة المستهدفة.

البناء لمنصات مختلفة

# Android APK (عالمي)
flutter build apk

# Android APK مقسم حسب ABI (تنزيلات أصغر)
flutter build apk --split-per-abi

# Android App Bundle (موصى به لـ Play Store)
flutter build appbundle

# iOS (يتطلب macOS و Xcode)
flutter build ios

# iOS بدون توقيع الكود (لـ CI/CD)
flutter build ios --no-codesign

# الويب
flutter build web

# الويب مع مسار أساسي مخصص
flutter build web --base-href /my-app/

# سطح مكتب Windows
flutter build windows

# سطح مكتب macOS
flutter build macos

# سطح مكتب Linux
flutter build linux
ملاحظة: لمتجر Google Play، استخدم دائماً flutter build appbundle بدلاً من flutter build apk. تتيح حزم التطبيقات لـ Google Play إنشاء ملفات APK محسّنة لكل تكوين جهاز، مما يؤدي إلى تنزيلات أصغر.

مواقع مخرجات البناء

# مخرجات APK:
build/app/outputs/flutter-apk/app-release.apk

# مخرجات App Bundle:
build/app/outputs/bundle/release/app-release.aab

# مخرجات الويب:
build/web/

# مخرجات iOS:
build/ios/iphoneos/Runner.app

# مخرجات Windows:
build/windows/x64/runner/Release/

# مخرجات macOS:
build/macos/Build/Products/Release/

flutter doctor

يتحقق أمر flutter doctor من بيئة التطوير ويبلغ عن أي مشاكل.

فحص البيئة

# فحص سريع
flutter doctor

# فحص مفصل مع معلومات تفصيلية
flutter doctor -v

# مثال على المخرجات:
# Doctor summary (to see all details, run flutter doctor -v):
# [✓] Flutter (Channel stable, 3.19.0)
# [✓] Android toolchain - develop for Android devices
# [✓] Xcode - develop for iOS and macOS
# [✓] Chrome - develop for the web
# [✓] Android Studio (version 2023.1)
# [✓] VS Code (version 1.85.0)
# [✓] Connected device (2 available)
# [✓] Network resources
#
# • No issues found!
نصيحة: شغّل flutter doctor -v كلما واجهت أخطاء بناء. غالباً يكشف عن حزم SDK مفقودة أو اتفاقيات ترخيص تحتاج قبول أو مشاكل تكوين تسبب المشاكل.

flutter clean

يزيل أمر flutter clean مجلد build/ والملفات المُنشأة الأخرى. استخدمه عندما تواجه أخطاء بناء غامضة.

تنظيف المشروع

# إزالة ملفات البناء
flutter clean

# بعد التنظيف، تحتاج لجلب التبعيات مرة أخرى
flutter clean && flutter pub get

# سير عمل إعادة البناء الكامل
flutter clean
flutter pub get
flutter run
ملاحظة: شغّل دائماً flutter pub get بعد flutter clean لأن التنظيف يزيل مجلد .dart_tool/ الذي يحتوي على بيانات حل التبعيات.

أوامر flutter pub

تدير عائلة أوامر flutter pub تبعيات مشروعك:

أوامر إدارة التبعيات

# تثبيت/حل التبعيات
flutter pub get

# الترقية إلى أحدث الإصدارات المسموح بها
flutter pub upgrade

# ترقية حزمة محددة
flutter pub upgrade http

# فرض ترقية الإصدارات الرئيسية
flutter pub upgrade --major-versions

# التحقق من التبعيات القديمة
flutter pub outdated

# عرض حل التبعيات
flutter pub deps

# مسح ذاكرة التخزين المؤقت العالمية لـ pub
flutter pub cache clean

# إصلاح ذاكرة التخزين المؤقت العالمية لـ pub
flutter pub cache repair

# إضافة حزمة
flutter pub add provider

# إضافة تبعية تطوير
flutter pub add --dev build_runner

# إزالة حزمة
flutter pub remove provider

flutter analyze

يُشغّل أمر flutter analyze تحليلاً ثابتاً على كودك لإيجاد الأخطاء المحتملة ومشاكل الأسلوب وانتهاكات أفضل الممارسات.

تحليل الكود

# تحليل المشروع بالكامل
flutter analyze

# مثال على المخرجات:
# Analyzing my_app...
#
#   info - Unused import - lib/models/old_model.dart:1:8
#   warning - The parameter 'key' is deprecated - lib/screens/home.dart:15:3
#   error - The argument type 'String' can't be assigned to 'int' - lib/utils.dart:23:10
#
# 1 error, 1 warning, 1 info found.

flutter test

يُشغّل أمر flutter test اختبارات مشروعك:

تشغيل الاختبارات

# تشغيل جميع الاختبارات
flutter test

# تشغيل ملف اختبار محدد
flutter test test/widget_test.dart

# تشغيل الاختبارات مع التغطية
flutter test --coverage

# تشغيل اختبارات تطابق نمط اسم
flutter test --name 'counter increments'

# تشغيل الاختبارات مع مخرجات مفصلة
flutter test --reporter expanded

flutter devices

يسرد أمر flutter devices جميع الأجهزة المتصلة والمحاكيات المتاحة لتشغيل تطبيقك:

سرد الأجهزة

# سرد جميع الأجهزة المتصلة
flutter devices

# مثال على المخرجات:
# 3 connected devices:
#
# Pixel 7 (mobile)   • emulator-5554 • android-arm64  • Android 14 (API 34)
# iPhone 15 (mobile) • ABC12345-...  • ios             • iOS 17.2 (simulator)
# Chrome (web)       • chrome        • web-javascript  • Google Chrome 120
# macOS (desktop)    • macos         • darwin-arm64    • macOS 14.2

# سرد المحاكيات المتاحة
flutter emulators

# تشغيل محاكي
flutter emulators --launch Pixel_7_API_34

flutter config

يدير أمر flutter config إعدادات Flutter SDK:

أوامر التكوين

# عرض التكوين الحالي
flutter config

# تفعيل/تعطيل دعم المنصة
flutter config --enable-web
flutter config --enable-windows-desktop
flutter config --enable-macos-desktop
flutter config --enable-linux-desktop

# تعطيل منصة
flutter config --no-enable-web

# تعيين مسار Android SDK
flutter config --android-sdk /path/to/android/sdk

# مسح جميع الإعدادات
flutter config --clear-features

flutter channel

يحتوي Flutter على قنوات إصدار متعددة. يتيح لك أمر flutter channel التبديل بينها:

إدارة القنوات

# عرض القناة الحالية
flutter channel

# التبديل إلى قناة مختلفة
flutter channel stable   # الأكثر استقراراً، موصى بها للإنتاج
flutter channel beta     # معاينة الميزات القادمة
flutter channel master   # أحدث تطوير، قد تكون غير مستقرة

# بعد تبديل القنوات، قم بالترقية للحصول على الأحدث
flutter channel stable
flutter upgrade
تحذير: استخدم فقط قناة stable لتطبيقات الإنتاج. قد تحتوي قنوات beta و master على أخطاء أو تغييرات جذرية قد تؤثر على موثوقية تطبيقك.

أوامر إضافية مفيدة

المزيد من أوامر CLI

# ترقية Flutter SDK إلى أحدث إصدار
flutter upgrade

# تخفيض Flutter SDK إلى الإصدار السابق
flutter downgrade

# عرض معلومات إصدار Flutter SDK
flutter --version

# عرض معلومات مسار SDK المفصلة
flutter sdk-path

# التقاط لقطة شاشة لتطبيق قيد التشغيل
flutter screenshot

# الاتصال بتطبيق Flutter قيد التشغيل
flutter attach -d <device-id>

# إنشاء الترجمات
flutter gen-l10n

# عرض سجلات من جهاز قيد التشغيل
flutter logs

ورقة مرجعية سريعة للأوامر

إليك مرجعاً سريعاً للأوامر الأكثر استخداماً:

مرجع سريع

# إعداد المشروع
flutter create --org com.mycompany my_app
flutter pub get

# التطوير اليومي
flutter run -d chrome
flutter analyze
flutter test

# البناء للإصدار
flutter build apk --split-per-abi
flutter build appbundle
flutter build ios
flutter build web

# استكشاف الأخطاء وإصلاحها
flutter doctor -v
flutter clean && flutter pub get
flutter pub cache repair

# إدارة الحزم
flutter pub add <package>
flutter pub upgrade --major-versions
flutter pub outdated

الملخص

في هذا الدرس، أتقنت أوامر Flutter CLI التي يحتاجها كل مطور:

  • flutter create مع خيارات المنظمة والمنصة والقالب
  • flutter run مع اختيار الجهاز وأوضاع البناء
  • flutter build لأهداف APK و App Bundle و iOS والويب
  • flutter doctor -v لتشخيص البيئة
  • flutter clean لحل أخطاء البناء الغامضة
  • عائلة flutter pub لإدارة التبعيات
  • flutter analyze و flutter test لجودة الكود
  • flutter devices و flutter config و flutter channel للإعداد
نصيحة: أنشئ اختصارات للأوامر التي تستخدمها بشكل متكرر. مثلاً: alias fr="flutter run"، alias fpg="flutter pub get"، alias fb="flutter build apk --split-per-abi". هذا يوفر وقتاً كبيراً على مدار المشروع.