Flutter Navigation

كيفية التعامل مع التنقل بين الشاشات في Flutter؟

التنقل بين الشاشات (Navigation) هو عنصر أساسي في بناء التطبيقات، حيث يتيح للمستخدم الانتقال بين صفحات التطبيق بسهولة. يوفر Flutter أدوات قوية وبسيطة لتنفيذ التنقل بين الشاشات باستخدام Navigator وRoutes، مما يسهل عليك إدارة تنقل المستخدمين بين شاشات التطبيق. في هذا المقال، سنتناول كيفية إعداد التنقل الأساسي بين الشاشات في Flutter، مع أمثلة عملية.


محتويات المقال

  1. مقدمة حول التنقل في Flutter
  2. إنشاء شاشات متعددة
  3. التنقل بين الشاشات باستخدام Navigator
  4. إعادة الشاشات وإزالتها من الذاكرة
  5. إدارة مسارات التنقل (Named Routes)
  6. الأسئلة الشائعة

1. مقدمة حول التنقل في Flutter

يُستخدم Navigator في Flutter لإدارة قائمة (Stack) من الشاشات. يمكن للمطورين دفع شاشة جديدة إلى المكدس أو إزالتها، مما يسمح بانتقال المستخدم بسلاسة بين الصفحات. هذا النظام مناسب للتطبيقات متعددة الشاشات ويتيح التحكم الكامل في كيفية ظهور الشاشات وانتقالها.

معلومة مفيدة: يمكن تخصيص الانتقالات (Transitions) بين الشاشات في Flutter لإضافة تأثيرات مثل التلاشي أو التمرير.


2. إنشاء شاشات متعددة

قبل التنقل، يجب أولاً إنشاء عدة شاشات كـ Widgets مستقلة.

مثال: إنشاء شاشتين أساسيتين

import 'package:flutter/material.dart';

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("الشاشة الأولى")),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondScreen()),
            );
          },
          child: Text("الانتقال إلى الشاشة الثانية"),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("الشاشة الثانية")),
      body: Center(
        child: Text("مرحبا بك في الشاشة الثانية"),
      ),
    );
  }
}
Dart

3. التنقل بين الشاشات باستخدام Navigator

يمكنك استخدام Navigator.push لإضافة شاشة جديدة إلى المكدس، وNavigator.pop لإزالتها والعودة إلى الشاشة السابقة.

مثال: التنقل وإعادة الشاشة

Navigator.push(
  context,
  MaterialPageRoute(builder: (context) => SecondScreen()),
);

// للرجوع إلى الشاشة السابقة
Navigator.pop(context);
Dart

4. إدارة مسارات التنقل (Named Routes)

يتيح لك استخدام Named Routes تعريف المسارات لكل شاشة مرة واحدة في التطبيق، مما يسهل التنقل بين الشاشات المختلفة، خاصةً في التطبيقات الكبيرة.

إعداد Named Routes

  • في MaterialApp، قم بتعريف جميع المسارات:
MaterialApp(
  initialRoute: '/',
  routes: {
    '/': (context) => FirstScreen(),
    '/second': (context) => SecondScreen(),
  },
);
Dart
  • لاستخدام Named Route للتنقل:
Navigator.pushNamed(context, '/second');
Dart

رابط توثيق Flutter Navigation: Flutter Navigation and Routing


نصائح وأفضل الممارسات

  • تنظيم المسارات في ملف مستقل: إذا كان لديك العديد من المسارات، يمكنك تعريفها في ملف مستقل لسهولة التنظيم.
  • استخدام Navigator.popUntil: للعودة إلى شاشة معينة في مكدس التنقل.
  • إضافة حركات انتقالية مخصصة: يمكنك تخصيص حركات التنقل باستخدام PageRouteBuilder للحصول على تجربة انتقال سلسة.

الأسئلة الشائعة (FAQs)

  1. هل يمكنني تمرير بيانات بين الشاشات؟
    • نعم، يمكنك تمرير البيانات عند التنقل باستخدام Navigator.push، وقراءتها في الشاشة الجديدة.
  2. ما الفرق بين push وpushReplacement؟
    • push يضيف شاشة جديدة إلى المكدس، بينما pushReplacement يستبدل الشاشة الحالية بالشاشة الجديدة.
  3. كيف يمكنني تخصيص حركة التنقل؟
    • يمكنك استخدام PageRouteBuilder لتحديد تأثيرات الانتقال المخصصة.

روابط مفيدة


بهذا، يمكنك الآن التحكم الكامل في التنقل بين الشاشات في Flutter، وإنشاء تجربة مستخدم سلسة ومنظمة.

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *