شرح Flutter للمبتدئين: إطار العمل الأقوى لبناء تطبيقات الجوّال
تطوير التطبيقات

شرح Flutter للمبتدئين: إطار العمل الأقوى لبناء تطبيقات الجوّال

Flutter يسمح لك ببناء تطبيقات Android و iOS و web و desktop بكود واحد. تعلّم أساسياته في ساعة.

م
مؤسس LahbabiGuide
3 دقائق قراءة
شارك:

لماذا Flutter؟

Flutter إطار عمل من Google لبناء تطبيقات بكود واحد تعمل على Android و iOS و Web و Windows و macOS و Linux. أشهر تطبيقاته: Google Pay، BMW، eBay Motors، Alibaba.

مزاياه:

  • كود واحد لكل المنصّات
  • أداء ممتاز — يُحوّل الكود إلى native
  • Hot Reload — تعديل الكود يظهر فوراً (< ثانية)
  • Widgets غنيّة — مئات المكوّنات الجاهزة
  • مفتوح المصدر ومدعوم من مجتمع ضخم

التثبيت

Windows / Mac / Linux

  1. حمّل Flutter SDK من flutter.dev
  2. أضفه إلى PATH
  3. ثبّت Android Studio (للمحاكي) و VSCode مع إضافة Flutter
  4. شغّل flutter doctor للتحقّق
bash
flutter doctor
# يُظهر تقريراً بكل ما تحتاج

أول تطبيق

bash
flutter create my_first_app
cd my_first_app
flutter run

في ثوانٍ يفتح تطبيق counter افتراضي على الجهاز/المحاكي.

إعلان

بنية المشروع

my_first_app/
├── lib/
│   └── main.dart         # نقطة البدء
├── android/              # كود Android الأصلي
├── ios/                  # كود iOS الأصلي
├── assets/               # صور وخطوط
└── pubspec.yaml          # التبعيات

الـ Widget: اللبنة الأساسية

كل شيء في Flutter Widget — الأزرار، النصوص، حتى التطبيق نفسه.

dart
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(
      title: 'تطبيقي',
      home: Scaffold(
        appBar: AppBar(title: const Text('مرحباً')),
        body: const Center(
          child: Text('أهلاً بالعالم!'),
        ),
      ),
    );
  }
}

StatelessWidget vs StatefulWidget

StatelessWidget — لا يتغيّر (نص ثابت، أيقونة):

dart
class Greeting extends StatelessWidget {
  final String name;
  const Greeting({super.key, required this.name});

  @override
  Widget build(BuildContext context) {
    return Text('أهلاً $name');
  }
}

StatefulWidget — يُحدَّث (عدّاد، نموذج):

dart
class Counter extends StatefulWidget {
  const Counter({super.key});
  @override
  State<Counter> createState() => _CounterState();
}

class _CounterState extends State<Counter> {
  int count = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text('$count', style: const TextStyle(fontSize: 48)),
        ElevatedButton(
          onPressed: () => setState(() => count++),
          child: const Text('+1'),
        ),
      ],
    );
  }
}

Layout: ترتيب العناصر

Column و Row

dart
Column(
  children: [
    Text('الأول'),
    Text('الثاني'),
    Text('الثالث'),
  ],
)

Row(
  mainAxisAlignment: MainAxisAlignment.spaceBetween,
  children: [
    Icon(Icons.home),
    Icon(Icons.settings),
  ],
)

Container — الصندوق المرن

dart
Container(
  padding: const EdgeInsets.all(16),
  margin: const EdgeInsets.symmetric(vertical: 8),
  decoration: BoxDecoration(
    color: Colors.blue.shade50,
    borderRadius: BorderRadius.circular(12),
    border: Border.all(color: Colors.blue),
  ),
  child: const Text('محتوى داخل صندوق'),
)

التنقّل بين الشاشات

dart
// دفع شاشة جديدة
Navigator.push(
  context,
  MaterialPageRoute(builder: (_) => const DetailsScreen()),
);

// الرجوع
Navigator.pop(context);

// استبدال الشاشة
Navigator.pushReplacement(
  context,
  MaterialPageRoute(builder: (_) => const HomeScreen()),
);

الأخطاء الشائعة

  • "No Material widget found": لفّ التطبيق بـ MaterialApp
  • "setState called after dispose": تحقّق بـ if (mounted) قبل setState
  • الواجهة لا تُحدَّث: لا تنسَ setState() عند تغيير القيم

الأسئلة الشائعة

Flutter vs React Native؟

  • Flutter: أداء أفضل، UI موحّد بين iOS/Android، مجتمع متنامٍ
  • React Native: يستخدم JavaScript (معروف)، مكوّنات native فعلية، شركات كبيرة

ابدأ بـ Flutter إن كنت تحبّ التصميم المتحكَّم به بالكامل.

هل أحتاج تعلّم Dart؟

نعم، لكنه سهل — إن كنت تعرف JavaScript أو Java، تتعلّمه في يومين.

هل Flutter مناسب للمشاريع الكبيرة؟

نعم — Alibaba بنت تطبيقها الرئيسي بـ Flutter. مناسب لأيّ حجم.

اقرأ أيضاً

مقالات ذات صلة