Flutter-integration med eksplicit ejerskab af containeren.

ProviderScope kan eje en container eller modtage en udefra. Consumer-API'er holder WidgetRef-adgang kompatibel med Riverpod-lignende kode.

Ejerskab af ProviderScope

Ejerskab af containeren ændrer ansvaret for disposal.

Intern container

ProviderScope(child: ...) disposer automatisk

Ekstern container

ProviderScope(container: c, ...) kræver, at c.dispose() kaldes af den, der bruger den

Ukontrolleret scope

UncontrolledProviderScope disposer aldrig containeren

Typisk faldgrube

I widget-tests skal du huske at dispose en ekstern ProviderContainer for at undgå ventende timer-lækager.

Consumer-varianter

Alle muligheder eksponerer WidgetRef; vælg efter widget-stil og behov for lokal state.

App-rod

Hvornår hver skal bruges

Consumer: lokal builder-blok til små reaktive områder.
ConsumerWidget: statsløs widget med build(context, ref).
ConsumerStatefulWidget: stateful widget med ref inde i ConsumerState.

Eksempel: ConsumerStatefulWidget

Brug ConsumerState, når du har brug for 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),
        ),
      ],
    );
  }
}
Consumers interne logik planlægger rebuilds til post-frame, hvilket reducerer problemer med setState under build.
Brug kun WidgetRef.watch til værdier, der skal udløse rebuilds.
Hold sideeffekter uden for build; brug callbacks samt invoke/refresh-metoder.

Næste skridt

Test

Valider container-livscyklus, overrides og asynkrone opdateringer i enheds- og widget-tests.

Åbn Testing

API-reference

Se signaturerne for ProviderScope, WidgetRef og container-metoder.

Åbn API-reference