Flutter integracija s eksplicitnim vlasništvom nad containerom.

ProviderScope može posjedovati container ili ga primiti izvana. Consumer API-ji održavaju WidgetRef pristup kompatibilnim s Riverpod-stilom koda.

Vlasništvo nad ProviderScopeom

Vlasništvo nad containerom mijenja odgovornost za dispose.

Interni container

ProviderScope(child: ...) automatski se disposea

Vanjski container

ProviderScope(container: c, ...) zahtijeva da pozivatelj pozove c.dispose()

Neupravljani scope

UncontrolledProviderScope nikada ne disposea container

Česta zamka

U widget testovima, ne zaboravite disposeati izvana injektirani ProviderContainer kako biste izbjegli curenje čekajućih timera.

Varijante Consumera

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

Korijen aplikacije

Kada koristiti koji

Consumer: lokalni builder blok za male reaktivne područja.
ConsumerWidget: stateless widget s build(context, ref).
ConsumerStatefulWidget: stateful widget s ref unutar ConsumerState.

Primjer: ConsumerStatefulWidget

Koristite ConsumerState kada trebate i WidgetRef i lokalno promjenjivo 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),
        ),
      ],
    );
  }
}
Unutarnji mehanizam Consumera raspoređuje rebuildove na post-frame, čime smanjuje probleme sa setState tijekom builda.
WidgetRef.watch koristite samo za vrijednosti koje trebaju pokrenuti rebuild.
Bočne učinke držite izvan builda; koristite callbackove i metode invoke/refresh.

Sljedeći koraci

Testiranje

Provjerite životni ciklus containera, overrideove i asinkrona ažuriranja u jediničnim i widget testovima.

Otvori testiranje

API referenca

Pogledajte potpise za ProviderScope, WidgetRef i metode containera.

Otvori API referencu