التنقل بين الشاشات (Navigation) هو عنصر أساسي في بناء التطبيقات، حيث يتيح للمستخدم الانتقال بين صفحات التطبيق بسهولة. يوفر Flutter أدوات قوية وبسيطة لتنفيذ التنقل بين الشاشات باستخدام Navigator وRoutes، مما يسهل عليك إدارة تنقل المستخدمين بين شاشات التطبيق. في هذا المقال، سنتناول كيفية إعداد التنقل الأساسي بين الشاشات في Flutter، مع أمثلة عملية.
محتويات المقال
- مقدمة حول التنقل في Flutter
- إنشاء شاشات متعددة
- التنقل بين الشاشات باستخدام Navigator
- إعادة الشاشات وإزالتها من الذاكرة
- إدارة مسارات التنقل (Named Routes)
- الأسئلة الشائعة
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("مرحبا بك في الشاشة الثانية"),
),
);
}
}
Dart3. التنقل بين الشاشات باستخدام Navigator
يمكنك استخدام Navigator.push
لإضافة شاشة جديدة إلى المكدس، وNavigator.pop
لإزالتها والعودة إلى الشاشة السابقة.
مثال: التنقل وإعادة الشاشة
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondScreen()),
);
// للرجوع إلى الشاشة السابقة
Navigator.pop(context);
Dart4. إدارة مسارات التنقل (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)
- هل يمكنني تمرير بيانات بين الشاشات؟
- نعم، يمكنك تمرير البيانات عند التنقل باستخدام
Navigator.push
، وقراءتها في الشاشة الجديدة.
- نعم، يمكنك تمرير البيانات عند التنقل باستخدام
- ما الفرق بين
push
وpushReplacement
؟push
يضيف شاشة جديدة إلى المكدس، بينماpushReplacement
يستبدل الشاشة الحالية بالشاشة الجديدة.
- كيف يمكنني تخصيص حركة التنقل؟
- يمكنك استخدام
PageRouteBuilder
لتحديد تأثيرات الانتقال المخصصة.
- يمكنك استخدام
روابط مفيدة
بهذا، يمكنك الآن التحكم الكامل في التنقل بين الشاشات في Flutter، وإنشاء تجربة مستخدم سلسة ومنظمة.