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),
),
],
);
}
}
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ç