Aniq container egaligi bilan Flutter integratsiyasi.
ProviderScope container'ga egalik qilishi yoki uni tashqaridan qabul qilishi mumkin. Consumer API'lari WidgetRef kirishini Riverpod uslubidagi kod bilan mos holda saqlaydi.
ProviderScope egaligi
Container egaligi dispose mas'uliyatini o'zgartiradi.
Ichki container
ProviderScope(child: ...) avtomatik dispose qilinadi
Tashqi container
ProviderScope(container: c, ...) uchun chaqiruvchi c.dispose() chaqirishi kerak
Boshqarilmaydigan scope
UncontrolledProviderScope container'ni hech qachon dispose qilmaydi
Keng tarqalgan xato
Widget testlarda, kutayotgan timer leak'laridan qochish uchun tashqaridan kiritilgan ProviderContainer'ni dispose qilishni unutmang.
Consumer variantlari
Barcha variantlar WidgetRef taqdim etadi; widget uslubi va mahalliy holat ehtiyojlariga qarab tanlang.
Ilova ildizi
Qaysi biri qachon ishlatiladi
Consumer: kichik reaktiv hududlar uchun mahalliy builder bloki.
ConsumerWidget: build(context, ref) ga ega stateless widget.
ConsumerStatefulWidget: ConsumerState ichida ref bo'lgan stateful widget.
Misol: ConsumerStatefulWidget
WidgetRef ham, mahalliy o'zgaruvchan UI holati ham kerak bo'lganda ConsumerState'dan foydalaning.
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),
),
],
);
}
}
Keyingi qadamlar
Sinov
Container hayot tsikli, override'lar va async yangilanishlarni unit va widget testlarida tekshiring.
Sinovni ochishAPI ma'lumotnomasi
ProviderScope, WidgetRef va container usullari uchun signature'larni ko'ring.
API ma'lumotnomasini ochish