Middle
Flutterda immutabl ob'ektlar qanday ishlatiladi?
sobes.tech AI
AIdan javob
Flutterda, o'zgarmas ob'ektlar (masalan, vidjetlar) UI-ni qayta chizish mexanizmidagi markaziy rol o'ynaydi.
Foydalanishning asosiy jihatlari:
- Qayta chizish samaradorligi: Flutter, element daraxtidagi vidjetlarni samarali taqqoslay oladi, chunki ularning xususiyatlari yaratildikten so'ng o'zgarmaydi. Agar ota vidjetning xususiyatlari o'zgarmagan bo'lsa, uning bolalari, ya'ni o'zgarmas vidjetlar, ham qayta chizilmaydi, bu esa ishlashni optimallashtiradi.
- Oldindan ko'rish mumkinlik: Vidjetning xususiyatlarining o'zgarmasligi sababli, uning holati har doim yaratish vaqtida aniq belgilangan bo'ladi. Bu xatolarni aniqlash va ma'lumot oqimini tushunishni osonlashtiradi.
- Oqim xavfsizligi: O'zgarmas ob'ektlar o'zgartirilmaydi, shuning uchun ular tabiatan oqim uchun xavfsiz. Bu asinxron muhitlarda, bir nechta iplar ma'lumotlar bilan o'zaro ta'sir qilishi mumkin bo'lsa, muhimdir.
- Yangi holat yaratish: Ma'lumotlar o'zgarganda, mavjud ob'ektni o'zgartirish o'rniga, yangilangan xususiyatlar bilan yangi vidjet yoki holat ob'ekti yaratiladi.
O'zgarmas vidjet StatelessWidget misoli:
import 'package:flutter/material.dart';
class ImmutableWidget extends StatelessWidget {
final String text; // Final maydon - uni yaratgandan so'ng o'zgarmas qiladi
const ImmutableWidget({Key? key, required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(text);
}
}
StatefulWidgetda, vidjet o'zi o'zgarmas, lekin unga bog'langan State ob'ekti o'zgaruvchan bo'lib, o'zgaruvchan holatni saqlaydi. State ichida holat o'zgartirilganda, setState() chaqiriladi, bu esa frameworkga vidjetlarni yangi holat bilan qayta qurish zarurligini bildiradi. Yangi xususiyatlar bilan yangi vidjet ob'ekti yaratiladi, eski vidjet yangi bilan solishtiriladi va elementlar daraxtidagi minimal o'zgarishlar aniqlanadi.