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),
),
],
);
}
}
Sledeći koraci
Testiranje
Proverite životni ciklus container-a, override-ove i asinhrona ažuriranja u unit i widget testovima.
Otvorite testiranjeAPI referenca
Pogledajte potpise za ProviderScope, WidgetRef i metode container-a.
Otvorite API referencu