स्पष्ट container स्वामित्वसहितको Flutter एकीकरण।
ProviderScope ले container आफैंसँग राख्न सक्छ वा बाहिरबाट प्राप्त गर्न सक्छ। Consumer API हरूले WidgetRef पहुँचलाई Riverpod शैलीको कोडसँग मिल्दोजुल्दो राख्छन्।
ProviderScope स्वामित्व
Container स्वामित्वले dispose जिम्मेवारी बदल्छ।
आन्तरिक container
ProviderScope(child: ...) स्वतः dispose हुन्छ
बाह्य container
ProviderScope(container: c, ...) का लागि c.dispose() बोलाउनेले गर्नुपर्छ
नियन्त्रणरहित scope
UncontrolledProviderScope ले container कहिल्यै dispose गर्दैन
सामान्य समस्या
widget परीक्षणहरूमा बाहिरबाट inject गरिएको ProviderContainer लाई dispose गर्न नबिर्सनुहोस्, नत्र pending timer leak हुन सक्छ।
Consumer प्रकारहरू
सबै विकल्पहरूले WidgetRef देखाउँछन्; widget शैली र स्थानीय state आवश्यकताका आधारमा छान्नुहोस्।
App root
कहिले कुन प्रयोग गर्ने
Consumer: साना reactive क्षेत्रहरूका लागि स्थानीय builder block.
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 को जीवनचक्र, override हरू, र async अद्यावधिकहरू unit तथा widget परीक्षणहरूमा प्रमाणित गर्नुहोस्।
परीक्षण खोल्नुहोस्API सन्दर्भ
ProviderScope, WidgetRef, र container विधिहरूका signatures हेर्नुहोस्।
API सन्दर्भ खोल्नुहोस्