Flutter-samþætting með skýru container-eignarhaldi.
ProviderScope getur átt container eða fengið það utan frá. Consumer-API heldur WidgetRef-aðgangi samhæfðum Riverpod-líkum kóða.
Eignarhald ProviderScope
Eignarhald container-a breytir ábyrgð á losun.
Innra container
ProviderScope(child: ...) losar sjálfkrafa
Ytra container
ProviderScope(container: c, ...) krefst c.dispose() frá kallanda
Óstýrt scope
UncontrolledProviderScope losar aldrei container-ið
Algeng gildra
Í widget-prófum skaltu muna að losa ProviderContainer sem er sprautað inn utan frá til að forðast leka í biðtímum.
Consumer-tilbrigði
Allir kostir birta WidgetRef; veldu eftir widget-stíl og þörf fyrir staðbundna stöðu.
Rót forrits
Hvenær á að nota hvað
Consumer: staðbundinn builder-blokkur fyrir lítil reactive svæði.
ConsumerWidget: stateless widget með build(context, ref).
ConsumerStatefulWidget: stateful widget með ref innan ConsumerState.
Dæmi: ConsumerStatefulWidget
Notaðu ConsumerState þegar þú þarft bæði WidgetRef og staðbundna breytilega UI-stöðu.
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),
),
],
);
}
}
Næstu skref
Prófanir
Staðfestu lífsferil container-a, overrides og async-uppfærslur í unit- og widget-prófum.
Opna prófanirAPI-tilvísun
Sjáðu undirskriftir fyrir ProviderScope, WidgetRef og container-aðferðir.
Opna API-tilvísun