स्पष्ट container मालकीसह Flutter एकत्रीकरण.
ProviderScope कंटेनरचे मालक होऊ शकते किंवा बाहेरून एखादा कंटेनर स्वीकारू शकते. Consumer APIs WidgetRef प्रवेश Riverpod-शैलीच्या कोडशी सुसंगत ठेवतात.
ProviderScope मालकी
Container मालकीमुळे disposal जबाबदारी बदलते.
आंतरिक container
ProviderScope(child: ...) आपोआप dispose होते
बाह्य container
ProviderScope(container: c, ...) साठी कॉल करणाऱ्याने c.dispose() करणे आवश्यक आहे
अनियंत्रित scope
UncontrolledProviderScope कधीच container dispose करत नाही
सामान्य अडचण
widget tests मध्ये बाहेरून inject केलेला ProviderContainer dispose करायला विसरू नका, अन्यथा pending timer leaks होऊ शकतात.
Consumer प्रकार
सर्व पर्याय WidgetRef उघड करतात; widget शैली आणि स्थानिक state गरजेनुसार निवडा.
अॅप root
प्रत्येक कधी वापरायचा
Consumer: लहान reactive क्षेत्रांसाठी स्थानिक builder ब्लॉक.
ConsumerWidget: build(context, ref) असलेले stateless widget.
ConsumerStatefulWidget: ConsumerState मधील ref असलेले stateful widget.
उदाहरण: ConsumerStatefulWidget
जेव्हा तुम्हाला WidgetRef आणि स्थानिक बदलणारा 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 जीवनचक्र, overrides आणि async updates unit आणि widget tests मध्ये पडताळा.
चाचणी उघडा