شرح وتعريف ال Provider وطريقه استخدامه فى ال NavigationBa
شرح وتعريف ال Provider وطريقه استخدامه فى ال NavigationBar : -
شرح وتعريف ال Provider وطريقه استخدامه فى ال NavigationBar : -
تعريف ال Provider
بما انا عارفين ان فلاتر لازم عشان نحدث اى شئ فى الواجهه نعمل StatfulWidget
وننادى على SetState , لكى تقوم بالنداء مجددا على داله ال Build
التى تقوم باعاده تحميل الواجهه كامله من الاول
وطبعا هذا الأمر ليس جيدا على الاطلاق من ناحيه جوده واداء التطبيق وخصوصا لو مرتبط بقاعده بيانات
لذلك اقترحوا حلول جديده
تسمى Management State
وهذا الأمر له حلول كتير من ضمنها Provider
وبيكون عباره عن مستمع او مخزن مثلا بنخزن فيه الاشياء التى سنحتاج الى تغييرها ويمكننا فى هذه الحاله من خلال اى مكان فى التطبيق ان ننادى عليها ونستدعيها
وطبعا بما اننا هننادى علىه فى حاله الحاجه الى تحديث مكان محدد فى التطبيق بالتالى هنحدد الجزء ده ونقوم بعمله داخل ChangeNotifierProvider
ولو هنقوم بعمل أكتر من Provider
داخل التطبيق نفسه
نذهب الى داله ال Main فى البدايه خالص للتطبيق و نعملها داخل MultiProvider
@override
Widget build(BuildContext context) {
return MultiProvider(providers: [
ChangeNotifierProvider(create: (_) => BottomNaviProvider()),] ,
child : const MaterialApp(
title: 'Bottom NavBar Demo',
debugShowCheckedModeBanner: false,
home:SplashScreen() ,
) // SplashScreen
);
خطوات استخدام ال Provider فى عمل BottomNavigatioBar :-
- عمل كلاس لل Provider الأول ويكون , الكلاس ده هنعرف فيه الحجات اللى هتتغير , وفى حالتنا هنا هنعرف فيه Index خاص بالواجهه التى ستستخدم فى ال navigation يعنى مثلا لو اتحرك من زر Home مثلا الى زر Favourite وهكذا
- فى نفس الكلاس بتاع ال Provider ده هننادى على الداله notifyListeners();
عشان تستمع الى اى تغيير فى الواجهه
3 . نجهز الجزء الخاص بال Navigation الأول نعمل List من ال Widgets اللى هترجع اى واجهه التى ستستخدم حين الضغط على زر ال Navigation وليكن كالتالى
List<Widget> pages = const [ImageScreen() , VideoScreen()];
نعمل ليست تانيه من الايقونات والنصوص التى ستظهر فى اسفل ال
Navigation
static const List<BottomNavigationBarItem> _bottomNavigationBarItems
= <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.image),
label: 'Image',
),
BottomNavigationBarItem(
icon: Icon(Icons.video_call),
label: 'Video',
), ];
- نأخد Instance من ال Provider بتعنا عشان ندخل قيمه ال Index اللى هيتحرك بها الواجهه
- . نعمل ال Body بتاعنا عادى داخل Scafold
بس طبعا ال Body بتاعها هيكون الواجهه اللى جايه من ال Provider تبعى - ال Items بتاعه عباره عن الليست اللى عملناها فوق لل Navigation
- وطبعا داله OnTab
- فى داله ال Main بقى أصلا اللى فى بدايه التطبيق هنعمل لها wrap بال Provider عشان نقدر نستمع الى اى تغيير له
لكن فى حالتنا اختارنا Multi Provider لأننا هنعمل اكتر من Provider فى التطبيق
الكود كامل
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !