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),
        ),
      ],
    );
  }
}
Innri virkni Consumer tímasetur rebuild eftir frame og dregur úr setState-during-build vandamálum.
Notaðu WidgetRef.watch aðeins fyrir gildi sem eiga að kalla fram rebuild.
Haltu side effects utan build; notaðu callback og invoke/refresh-aðferðir.

Næstu skref

Prófanir

Staðfestu lífsferil container-a, overrides og async-uppfærslur í unit- og widget-prófum.

Opna prófanir

API-tilvísun

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

Opna API-tilvísun