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),
        ),
      ],
    );
  }
}
Innri virkni Consumer skipuleggur rebuild yfir á post-frame, sem dregur úr vandamálum með setState meðan build er í gangi.
Notaðu WidgetRef.watch aðeins fyrir gildi sem eiga að kveikja rebuild.
Haltu side effects utan build; notaðu callbacks og invoke/refresh aðferðir.

Næstu skref

Prófanir

Staðfestu lifecycle containera, overrides og async uppfærslur í eininga- og widget prófum.

Opna prófanir

API tilvísun

Sjáðu signature fyrir ProviderScope, WidgetRef og container aðferðir.

Opna API tilvísun