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),
),
],
);
}
}
Sljedeći koraci
Testiranje
Provjerite životni ciklus containera, overrideove i asinkrona ažuriranja u jediničnim i widget testovima.
Otvori testiranjeAPI referenca
Pogledajte potpise za ProviderScope, WidgetRef i metode containera.
Otvori API referencu