Integracija Flutter z izrecnim lastništvom vsebnika.
ProviderScope lahko lastniško upravlja vsebnik ali ga prejme od zunaj. API-ji Consumer ohranjajo dostop do WidgetRef združljiv s kodo v slogu Riverpod.
Lastništvo ProviderScope
Lastništvo vsebnika spremeni odgovornost za sprostitev.
Notranji vsebnik
ProviderScope(child: ...) se samodejno sprosti
Zunanji vsebnik
ProviderScope(container: c, ...) zahteva, da c.dispose() pokliče klicatelj
Nenadzorovan obseg
UncontrolledProviderScope vsebnika nikoli ne sprosti
Pogosta past
V widget testih ne pozabite sprostiti ProviderContainer, vstavljenega od zunaj, da se izognete morebitnim uhajanjem časovnikov.
Različice Consumer
Vse možnosti izpostavljajo WidgetRef; izberite glede na slog gradnika in potrebe lokalnega stanja.
Koren aplikacije
Kdaj uporabiti katerega
Consumer: local builder block for small reactive areas.
ConsumerWidget: stateless widget with build(context, ref).
ConsumerStatefulWidget: stateful widget with ref inside ConsumerState.
Primer: ConsumerStatefulWidget
ConsumerState uporabite, ko potrebujete tako WidgetRef kot lokalno spremenljivo stanje UI.
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),
),
],
);
}
}
Naslednji koraki
Testiranje
Preverite življenjski cikel vsebnika, prepisovanja in asinhrone posodobitve v enotskih in widget testih.
Odpri testiranjeReferenca API
Oglejte si podpise za ProviderScope, WidgetRef in metode vsebnika.
Odpri referenco API