واضح container ownership کے ساتھ Flutter integration.

ProviderScope ایک container کا مالک بن سکتا ہے یا اسے باہر سے وصول کر سکتا ہے۔ Consumer APIs، WidgetRef تک رسائی کو Riverpod-style code کے ساتھ ہم آہنگ رکھتی ہیں۔

ProviderScope Ownership

Container ownership disposal کی ذمہ داری بدل دیتی ہے۔

اندرونی container

ProviderScope(child: ...) خود بخود dispose ہو جاتا ہے

بیرونی container

ProviderScope(container: c, ...) کے لیے caller کو c.dispose() کرنا ہوتا ہے

غیر کنٹرول شدہ scope

UncontrolledProviderScope کبھی container کو dispose نہیں کرتا

عام غلطی

Widget tests میں یاد رکھیں کہ باہر سے inject کیے گئے ProviderContainer کو dispose کریں تاکہ pending timer leaks نہ ہوں۔

Consumer Variants

تمام options WidgetRef فراہم کرتے ہیں؛ widget style اور local state کی ضروریات کے مطابق انتخاب کریں۔

ایپ روٹ

کب کیا استعمال کریں

Consumer: چھوٹے reactive areas کے لیے local builder block.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.

مثال: ConsumerStatefulWidget

جب آپ کو WidgetRef اور local mutable UI state دونوں درکار ہوں تو ConsumerState استعمال کریں۔

class HomePage extends ConsumerStatefulWidget {
  const HomePage({super.key});

  @override
  ConsumerState<HomePage> createState() => _HomePageState();
}

class _HomePageState extends ConsumerState<HomePage> {
  bool expanded = false;

  @override
  Widget build(BuildContext context) {
    final user = ref.watch(currentUser);
    return Column(
      children: [
        Text('$user'),
        Switch(
          value: expanded,
          onChanged: (v) => setState(() => expanded = v),
        ),
      ],
    );
  }
}
Consumer کی داخلی منطق rebuilds کو فریم کے بعد شیڈول کرتی ہے، جس سے build کے دوران setState کے مسائل کم ہوتے ہیں۔
WidgetRef.watch صرف اُن values کے لیے استعمال کریں جو rebuild کو trigger کریں۔
side effects کو build سے باہر رکھیں؛ callbacks اور invoke/refresh methods استعمال کریں۔

اگلے مراحل

تست

container lifecycle، overrides، اور async updates کو unit اور widget tests میں verify کریں۔

تست کھولیں

API ریفرنس

ProviderScope، WidgetRef، اور container methods کی signatures دیکھیں۔

API ریفرنس کھولیں