સ્પષ્ટ container માલિકી સાથે Flutter એકીકરણ.
ProviderScope એક container નો માલિક બની શકે છે અથવા બહારથી container મેળવી શકે છે. Consumer APIs WidgetRef ઍક્સેસને Riverpod-શૈલીના કોડ સાથે સુસંગત રાખે છે.
ProviderScope માલિકી
Container ની માલિકી dispose કરવાની જવાબદારી બદલે છે.
આંતરિક 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 પ્રદાન કરે છે; વિજેટ શૈલી અને સ્થાનિક 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 માન્ય કરો.
ટેસ્ટિંગ ખોલો