Flutter-integrasjon med eksplisitt container-eierskap.

ProviderScope kan eie en container eller motta en utenfra. Consumer-API-ene holder WidgetRef-tilgangen kompatibel med Riverpod-stil kode.

ProviderScope-eierskap

Container-eierskap endrer ansvaret for disposal.

Intern container

ProviderScope(child: ...) disposerer automatisk

Ekstern container

ProviderScope(container: c, ...) krever at c.dispose() kalles av den som oppretter den

Ukontrollert scope

UncontrolledProviderScope disposerer aldri containeren

Vanlig fallgruve

I widget-tester må du huske å dispose en eksternt injisert ProviderContainer for å unngå ventende timer-lekkasjer.

Consumer-varianter

Alle alternativene eksponerer WidgetRef; velg etter widget-stil og behov for lokal state.

App-rot

Når du skal bruke hver

Consumer: lokalt builder-blokk for små reaktive områder.
ConsumerWidget: stateless widget med build(context, ref).
ConsumerStatefulWidget: stateful widget med ref inne i ConsumerState.

Eksempel: ConsumerStatefulWidget

Bruk ConsumerState når du trenger både WidgetRef og lokal, muterbar UI-state.

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),
        ),
      ],
    );
  }
}
Den interne logikken i Consumer planlegger rebuilds etter frame, noe som reduserer problemer med setState under bygging.
Bruk WidgetRef.watch bare for verdier som skal utløse rebuilds.
Hold sideeffekter utenfor build; bruk callbacks og invoke/refresh-metoder.

Neste steg

Testing

Valider container-livssyklus, overrides og async-oppdateringer i enhetstester og widget-tester.

Åpne testing

API-referanse

Se signaturene for ProviderScope, WidgetRef og container-metoder.

Åpne API-referanse