Flutter-integratie met expliciet containerbezit.
ProviderScope kan een container bezitten of er een van buiten ontvangen. De Consumer-API's houden toegang tot WidgetRef compatibel met Riverpod-achtige code.
ProviderScope-bezit
Containerbezit verandert de verantwoordelijkheid voor opruimen.
Interne container
ProviderScope(child: ...) wordt automatisch opgeruimd
Externe container
ProviderScope(container: c, ...) vereist dat de aanroeper c.dispose() uitvoert
Niet-beheerde scope
UncontrolledProviderScope ruimt de container nooit op
Veelvoorkomende valkuil
Vergeet in widgettests niet de extern geïnjecteerde ProviderContainer op te ruimen om resterende timerlekken te voorkomen.
Consumer-varianten
Alle opties stellen WidgetRef beschikbaar; kies op basis van widgetstijl en behoeften aan lokale state.
Applicatieroot
Wanneer gebruik je elk
Consumer: lokaal builderblok voor kleine reactieve gebieden.
ConsumerWidget: stateless widget met build(context, ref).
ConsumerStatefulWidget: stateful widget met ref binnen ConsumerState.
Voorbeeld: ConsumerStatefulWidget
Gebruik ConsumerState wanneer je zowel WidgetRef als lokale veranderlijke UI-state nodig hebt.
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),
),
],
);
}
}
Volgende stappen
Testen
Valideer containerlevenscyclus, overrides en async-updates in unit- en widgettests.
Testen openenAPI-referentie
Bekijk de signatures voor ProviderScope, WidgetRef en container-methoden.
API-referentie openen