Intégration Flutter avec propriété explicite du conteneur.
ProviderScope peut posséder un conteneur ou en recevoir un depuis l'extérieur. Les API Consumer gardent l'accès à WidgetRef compatible avec le code au style Riverpod.
Propriété de ProviderScope
La propriété du conteneur change la responsabilité du dispose.
Conteneur interne
ProviderScope(child: ...) se dispose automatiquement
Conteneur externe
ProviderScope(container: c, ...) exige que l'appelant fasse c.dispose()
Scope non contrôlé
UncontrolledProviderScope ne dispose jamais du conteneur
Piège courant
Dans les tests de widgets, pensez à disposer le ProviderContainer injecté depuis l'extérieur pour éviter les fuites de minuteurs en attente.
Variantes de Consumer
Toutes les options exposent WidgetRef ; choisissez selon le style du widget et les besoins d'état local.
Racine de l'application
Quand utiliser chaque variante
Consumer : bloc builder local pour les petites zones réactives.
ConsumerWidget : widget sans état avec build(context, ref).
ConsumerStatefulWidget : widget avec état et ref à l'intérieur de ConsumerState.
Exemple : ConsumerStatefulWidget
Utilisez ConsumerState lorsque vous avez besoin à la fois de WidgetRef et d'un état UI local mutable.
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),
),
],
);
}
}
Étapes suivantes
Tests
Validez le cycle de vie du conteneur, les overrides et les mises à jour asynchrones dans les tests unitaires et widget.
Ouvrir les testsRéférence API
Consultez les signatures de ProviderScope, WidgetRef et des méthodes du conteneur.
Ouvrir la référence API