Junior
Stateful və Stateless widgetləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
-
StatelessWidget:
- Daxili vəziyyəti olmayan və zamanla dəyişə bilən vəziyyəti olmayan widget.
- Widget parametrləri onun yaradılmasında təyin edilir və bütün həyat dövrü boyunca dəyişmir.
- Statik məlumatların göstərilməsi üçün istifadə olunur.
- Yenidən çəkiliş yalnız valideyn widget yenidən qurulduqda baş verir.
build()metodu ilə həyata keçirilir.
-
StatefulWidget:
- Daxili vəziyyəti (
State) olan və hadisələrə (istifadəçi əməliyyatları, şəbəkə sorğuları və s.) cavab verə bilən widget. setState()metodunun çağırılması ilə widget yenidən çəkilir.- İnteraktiv elementlər və dinamik məlumatların göstərilməsi üçün istifadə olunur.
- İki hissədən ibarətdir: öz
StatefulWidgetvə ona bağlıStateobyekti.
- Daxili vəziyyəti (
| Xüsusiyyət | StatelessWidget | StatefulWidget |
|---|---|---|
| Vəziyyət | Yoxdur | Dəyişən vəziyyət (State) |
| Yenidən çəkiliş | Ata widget yenidən qurulduqda | setState() çağırıldıqda |
| İstifadə | Statik məlumatlar, interaktiv olmayan elementlər | İnteraktiv elementlər, dinamik məlumatlar |
| İcrası | Yalnız build() metodu ilə |
createState() və State-in həyat dövrü metodları ilə |
// StatelessWidget nümunəsi
class MyStatelessWidget extends StatelessWidget {
final String text;
MyStatelessWidget({required this.text});
@override
Widget build(BuildContext context) {
return Text(text); // Sadəcə ötürülən mətni göstərir
}
}
// StatefulWidget nümunəsi
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0; // Daxili vəziyyət
void _incrementCounter() {
setState(() {
// Vəziyyəti dəyişir və yenidən çəkilişə səbəb olur
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Sayğac:'),
Text('$_counter'),
ElevatedButton(
onPressed: _incrementCounter, // Basıldıqda metod çağırılır
child: Text('Artır'),
),
],
);
}
}