Junior
Stateful va Stateless vidjetlar o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
-
StatelessWidget:
- Ichining ichki holati yo'q, va vaqt o'tishi bilan o'zgartirilishi mumkin emas.
- Vidget parametrlarining qiymati uning yaratilishida belgilangan bo'lib, uning hayoti davomida o'zgarmaydi.
- Statik ma'lumotlarni ko'rsatish uchun ishlatiladi.
- Qayta chizish faqat ota vidget qayta qurilganda amalga oshadi.
build()metod bilan amalga oshiriladi.
-
StatefulWidget:
- Ichki holati (
State) bo'lib, voqealarga (foydalanuvchi harakatlari, tarmoq so'rovlar va boshqalar) javob berishi mumkin. setState()metod chaqirilganda vidget qayta chiziladi.- Interaktiv elementlar va dinamik ma'lumotlarni ko'rsatish uchun ishlatiladi.
- Ikki qismdan iborat: o'zi
StatefulWidgetva unga bog'langanStateobyekti.
- Ichki holati (
| Xususiyat | StatelessWidget | StatefulWidget |
|---|---|---|
| Holat | Yo'q | O'zgaruvchan holat (State) |
| Qayta chizish | Ota vidget qayta qurilganda | setState() chaqirilganda |
| Foydalanish | Statik ma'lumotlar, interaktiv bo'lmagan elementlar | Interaktiv elementlar, dinamik ma'lumotlar |
| Amalga oshirish | Faqat build() metodi bilan |
createState() va State ning hayot sikli metodlari bilan |
// StatelessWidget misoli
class MyStatelessWidget extends StatelessWidget {
final String text;
MyStatelessWidget({required this.text});
@override
Widget build(BuildContext context) {
return Text(text); // Kiritilgan matnni oddiy ko'rsatadi
}
}
// StatefulWidget misoli
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0; // Ichki holat
void _incrementCounter() {
setState(() {
// Holatni o'zgartiradi va qayta chizishni chaqiradi
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Hisoblagich:'),
Text('$_counter'),
ElevatedButton(
onPressed: _incrementCounter, // Bosilganda metodni chaqirish
child: Text('Oshirish'),
),
],
);
}
}