تخطَّ إلى المحتوى

📱 شرح Flutter

إدارة الحالة

الدرس 16 من 25· ⏱ 1 دقائق قراءة

المستويات

  • setState: للحالة المحلّية لويدجت واحد (بسيط).
  • Provider/Riverpod: لمشاركة الحالة بين ويدجتس كثيرة.
  • Bloc: للتطبيقات الكبيرة المعقّدة.

Provider (الأشهر للبداية)

flutter pub add provider
class CounterModel extends ChangeNotifier {
  int count = 0;
  void increment() {
    count++;
    notifyListeners();      // يخبر المستمعين بالتغيير
  }
}

التوفير في الأعلى:

ChangeNotifierProvider(
  create: (_) => CounterModel(),
  child: MyApp(),
)

الاستهلاك:

final model = context.watch<CounterModel>();
Text("${model.count}");

context.read<CounterModel>().increment();

لماذا نتجاوز setState؟

setState يعيد بناء الويدجت كلّه ولا يشارك الحالة بين الشاشات. حلول مثل Provider تفصل المنطق عن الواجهة وتشارك الحالة بكفاءة.

💡 ابدأ بـ setState، وانتقل إلى Provider/Riverpod عندما تكبر الحالة المشتركة.

🎯 التالي: الشبكات و HTTP.

هل كان هذا الدرس مفيدًا؟