Aydın konteyner sahibliyi ilə Flutter inteqrasiyası.

ProviderScope bir konteynerə sahib ola bilər və ya onu xaricdən qəbul edə bilər. Consumer API-ləri WidgetRef girişini Riverpod tərzli kodla uyğun saxlayır.

ProviderScope sahibliyi

Konteyner sahibliyi dispose məsuliyyətini dəyişir.

Daxili konteyner

ProviderScope(child: ...) avtomatik dispose edir

Xarici konteyner

ProviderScope(container: c, ...) üçün çağıran tərəf c.dispose() etməlidir

Nəzarətsiz scope

UncontrolledProviderScope konteyneri heç vaxt dispose etmir

Yayğın səhv

Widget testlərində gözləyən taymer sızmalarının qarşısını almaq üçün xaricdən ötürülmüş ProviderContainer-i dispose etməyi unutmayın.

Consumer variantları

Bütün seçimlər WidgetRef təqdim edir; widget üslubuna və lokal vəziyyət ehtiyaclarına görə seçin.

Tətbiq kökü

Hər birindən nə vaxt istifadə etməli

Consumer: kiçik reaktiv sahələr üçün lokal builder bloku.
ConsumerWidget: build(context, ref) olan stateless widget.
ConsumerStatefulWidget: ConsumerState daxilində ref olan stateful widget.

Nümunə: ConsumerStatefulWidget

Həm WidgetRef, həm də lokal dəyişən UI vəziyyətinə ehtiyacınız olduqda ConsumerState istifadə edin.

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 daxili məntiqi yenidən qurulmaları post-frame mərhələsinə planlayır, bu da build zamanı setState problemlərini azaldır.
WidgetRef.watch-dan yalnız yenidən qurulma yaratmalı olan dəyərlər üçün istifadə edin.
Yan təsirləri build-dən kənarda saxlayın; callback-lərdən və invoke/refresh metodlarından istifadə edin.

Növbəti addımlar

Testlər

Konteyner həyat dövrünü, override-ları və asinxron yeniləmələri vahid və widget testlərində yoxlayın.

Testi aç

API istinadı

ProviderScope, WidgetRef və konteyner metodlarının imzalarına baxın.

API istinadını aç