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),
        ),
      ],
    );
  }
}
De interne werking van Consumer plant rebuilds na het frame, waardoor problemen met setState tijdens het builden afnemen.
Gebruik WidgetRef.watch alleen voor waarden die een rebuild moeten activeren.
Houd side effects buiten build; gebruik callbacks en invoke/refresh-methoden.

Volgende stappen

Testen

Valideer containerlevenscyclus, overrides en async-updates in unit- en widgettests.

Testen openen

API-referentie

Bekijk de signatures voor ProviderScope, WidgetRef en container-methoden.

API-referentie openen