स्पष्ट container स्वामित्व के साथ Flutter इंटीग्रेशन.
ProviderScope किसी container का मालिक बन सकता है या बाहर से एक container प्राप्त कर सकता है। Consumer APIs WidgetRef access को Riverpod-शैली के code के साथ संगत रखते हैं।
ProviderScope स्वामित्व
Container स्वामित्व 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 विविधताएँ
सभी विकल्प WidgetRef उपलब्ध कराते हैं; widget style और local state ज़रूरतों के आधार पर चुनें।
ऐप रूट
कब किसका उपयोग करें
Consumer: छोटे reactive क्षेत्रों के लिए स्थानीय builder block.
ConsumerWidget: build(context, ref) वाला stateless widget.
ConsumerStatefulWidget: ConsumerState के अंदर ref वाला stateful widget.
उदाहरण: ConsumerStatefulWidget
जब आपको WidgetRef और स्थानीय 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),
),
],
);
}
}
अगले कदम
टेस्टिंग
unit और widget tests में container lifecycle, overrides, और async updates सत्यापित करें।
टेस्टिंग खोलें