واضح 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),
),
],
);
}
}
اگلے مراحل
تست
container lifecycle، overrides، اور async updates کو unit اور widget tests میں verify کریں۔
تست کھولیں