Açık container sahipliği ile Flutter entegrasyonu.
ProviderScope bir container'ı sahiplenebilir ya da onu dışarıdan alabilir. Consumer API'leri, WidgetRef erişimini Riverpod tarzı kodla uyumlu tutar.
ProviderScope Sahipliği
Container sahipliği, dispose sorumluluğunu değiştirir.
Dahili container
ProviderScope(child: ...) otomatik olarak dispose edilir
Harici container
ProviderScope(container: c, ...) için çağıranın c.dispose() çağırması gerekir
Kontrolsüz kapsam
UncontrolledProviderScope container'ı asla dispose etmez
Yaygın hata
Widget testlerinde, bekleyen timer sızıntılarını önlemek için dışarıdan enjekte edilen ProviderContainer'ı dispose etmeyi unutmayın.
Consumer Varyantları
Tüm seçenekler WidgetRef sunar; widget stiline ve yerel durum ihtiyacına göre seçim yapın.
Uygulama kökü
Hangisi ne zaman kullanılır
Consumer: küçük reaktif alanlar için yerel builder bloğu.
ConsumerWidget: build(context, ref) içeren stateless widget.
ConsumerStatefulWidget: ConsumerState içinde ref bulunan stateful widget.
Örnek: ConsumerStatefulWidget
Hem WidgetRef'e hem de yerel değiştirilebilir UI durumuna ihtiyaç duyduğunuzda ConsumerState kullanın.
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),
),
],
);
}
}
Sonraki Adımlar
Test
Container yaşam döngüsünü, override'ları ve async güncellemeleri birim ve widget testlerinde doğrulayın.
Testleri AçAPI Referansı
ProviderScope, WidgetRef ve container yöntemlerinin imzalarına bakın.
API Referansını Aç