Sobes.tech
Junior — Middle

Εξηγήστε την έννοια του StatefulWidget στο Flutter και ποια είναι η διαφορά του από το StatelessWidget;

sobes.tech AI

Απάντηση από AI

Στο Flutter, το StatefulWidget είναι ένα widget που μπορεί να αλλάξει την κατάσταση του κατά τη διάρκεια της εκτέλεσης της εφαρμογής. Αποθηκεύει την κατάσταση του σε ένα ξεχωριστό αντικείμενο State, και όταν αυτή η κατάσταση αλλάζει, καλείται η μέθοδος setState(), που ενημερώνει το περιβάλλον.

Σε αντίθεση, το StatelessWidget δεν έχει εσωτερική κατάσταση και κατασκευάζεται πάντα με βάση τις παραμέτρους που του περνάνε. Δεν αλλάζει μετά τη δημιουργία.

Παράδειγμα:

class CounterWidget extends StatefulWidget {
  @override
  _CounterWidgetState createState() => _CounterWidgetState();
}

class _CounterWidgetState extends State<CounterWidget> {
  int _counter = 0;

  void _increment() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Μετρητής: \\$_counter'),
        ElevatedButton(onPressed: _increment, child: Text('Αύξηση')),
      ],
    );
  }
}

Εδώ, το CounterWidget είναι ένα StatefulWidget επειδή η τιμή του μετρητή αλλάζει και επηρεάζει το UI. Αν η κατάσταση δεν άλλαζε, θα μπορούσε να χρησιμοποιηθεί ένα StatelessWidget.