Flutter samþætting með skýru ownership á container.
ProviderScope getur átt container eða fengið einn utan frá. Consumer API-haldið gerir WidgetRef aðgang samhæfan Riverpod-stíl kóða.
Ownership á ProviderScope
Ownership á container breytir ábyrgð á dispose.
Innri container
ProviderScope(child: ...) er disposað sjálfkrafa
Ytri container
ProviderScope(container: c, ...) krefst þess að kallað sé á c.dispose() af notanda
Óstýrður scope
UncontrolledProviderScope disposar aldrei container
Algeng gryfja
Í widget prófum skaltu muna að dispose-a ProviderContainer sem er sprautað inn utan frá til að forðast lekanir frá biðtímum.
Consumer afbrigði
Allir valkostir birta WidgetRef; veldu eftir widget stíl og þörfum fyrir staðbundið state.
Rót forrits
Hvenær á að nota hvern
Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.
Dæmi: ConsumerStatefulWidget
Notaðu ConsumerState þegar þú þarft bæði WidgetRef og staðbundið breytilegt 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),
),
],
);
}
}
Næstu skref
Prófanir
Staðfestu lifecycle containera, overrides og async uppfærslur í eininga- og widget prófum.
Opna prófanirAPI tilvísun
Sjáðu signature fyrir ProviderScope, WidgetRef og container aðferðir.
Opna API tilvísun