Flutter integracija sa eksplicitnim vlasništvom nad container-om.

ProviderScope može da poseduje container ili da ga primi spolja. Consumer API-ji zadržavaju WidgetRef pristup kompatibilnim sa kodom u Riverpod stilu.

Vlasništvo nad ProviderScope

Vlasništvo nad container-om menja odgovornost za oslobađanje.

Interni container

ProviderScope(child: ...) se automatski oslobađa

Spoljni container

ProviderScope(container: c, ...) zahteva da c.dispose() pozove pozivalac

Nekontrolisani scope

UncontrolledProviderScope nikada ne oslobađa container

Česta zamka

U widget testovima, ne zaboravite da oslobodite spolja ubačeni ProviderContainer kako biste izbegli curenje čekajućih tajmera.

Varijante Consumer-a

Sve opcije izlažu WidgetRef; izaberite prema stilu widgeta i potrebama lokalnog stanja.

Korenski direktorijum aplikacije

Kada koristiti koji

Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.

Primer: ConsumerStatefulWidget

Koristite ConsumerState kada su vam potrebni i WidgetRef i lokalno promenljivo UI stanje.

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),
        ),
      ],
    );
  }
}
Interni mehanizam Consumer-a zakazuje ponovno iscrtavanje za post-frame, smanjujući probleme sa setState tokom build-a.
WidgetRef.watch koristite samo za vrednosti koje treba da pokrenu ponovno iscrtavanje.
Sporedne efekte držite van build-a; koristite callback-ove i invoke/refresh metode.

Sledeći koraci

Testiranje

Proverite životni ciklus container-a, override-ove i asinhrona ažuriranja u unit i widget testovima.

Otvorite testiranje

API referenca

Pogledajte potpise za ProviderScope, WidgetRef i metode container-a.

Otvorite API referencu