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),
        ),
      ],
    );
  }
}
Consumer'ın iç yapısı rebuild'leri frame sonrasına planlar; böylece build sırasında setState sorunları azalır.
WidgetRef.watch'u yalnızca rebuild tetiklemesi gereken değerler için kullanın.
Yan etkileri build dışında tutun; callback'ler ve invoke/refresh yöntemlerini kullanın.

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ç