Integrace Flutteru s explicitním vlastnictvím kontejneru.
ProviderScope může vlastnit kontejner nebo jej přijmout zvenčí. Consumer API zachovávají přístup k WidgetRef kompatibilní se stylem kódu Riverpodu.
Vlastnictví ProviderScope
Vlastnictví kontejneru mění odpovědnost za dispose.
Vnitřní kontejner
ProviderScope(child: ...) se disposeuje automaticky
Vnější kontejner
ProviderScope(container: c, ...) vyžaduje, aby c.dispose() zavolal volající
Nekontrolovaný scope
UncontrolledProviderScope kontejner nikdy nedisposeuje
Častá chyba
Ve widget testech nezapomeňte disposeovat externě předaný ProviderContainer, aby nedocházelo k únikům čekajících timerů.
Varianty Consumer
Všechny možnosti zpřístupňují WidgetRef; vybírejte podle stylu widgetu a potřeb lokálního stavu.
Kořen aplikace
Kdy použít který
Consumer: lokální builder blok pro malé reaktivní oblasti.
ConsumerWidget: stateless widget s build(context, ref).
ConsumerStatefulWidget: stateful widget s ref uvnitř ConsumerState.
Příklad: ConsumerStatefulWidget
Použijte ConsumerState, když potřebujete WidgetRef i lokální měnitelný stav 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),
),
],
);
}
}
Další kroky
Testování
Ověřte životní cyklus kontejneru, overridey a asynchronní aktualizace v unit a widget testech.
Otevřít TestingAPI Reference
Podívejte se na signatury ProviderScope, WidgetRef a metod kontejneru.
Otevřít API Reference