Sobes.tech
Junior — Middle

Selgitage erinevust süsteemi sees säilitatava oleku ja süsteemide vahel, mis olekut vahepeal ei säilita.

sobes.tech AI

Vastus AI-lt

Seisund, mis süsteemi sees hoitakse (stateful), tähendab, et süsteem salvestab teavet eelnevate interaktsioonide või andmete kohta päringute vahel. See võimaldab süsteemil mäletada kasutaja konteksti, seadeid või vahepealseid tulemusi.

Vastupidiselt, süsteemid ilma seisundita (stateless) ei salvesta mingit teavet päringute vahel. Iga päring töödeldakse kui uus, sõltumatu, ilma eelnevate teadmisteta.

Flutteris avaldub see järgmiselt:

  • Stateful Widget — vidjet, mis hoiab seisundit (näiteks loendur, sisestatud tekst). Kui seisund muutub, siis vidjet uuesti joonistatakse, säilitades andmed vahemikus uuendusi.
  • Stateless Widget — seisunditeta vidjet, mis ehitatakse ainult sisendparameetrite põhjal ning ei hoia sisemisi andmeid.

Näide:

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('Count: \\$_counter'),
        ElevatedButton(onPressed: _increment, child: Text('Increment')),
      ],
    );
  }
}

Siin säilitatakse _counter seisund vahepeal, mis ei ole võimalik stateless vidjetis.