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),
),
],
);
}
}
Neste steg
Testing
Valider container-livssyklus, overrides og async-oppdateringer i enhetstester og widget-tester.
Åpne testing