Sobes.tech
Junior — Middle

Paaiškinkite skirtumą tarp būsenos, kuri saugoma sistemoje, ir sistemų, kurios nesaugo būsenos tarp užklausų.

sobes.tech AI

Atsakymas iš AI

Būsena, kuri saugoma sistemoje (su būsena), reiškia, kad sistema saugo informaciją apie ankstesnius sąveikos ar duomenų tarp užklausų. Tai leidžia sistemai prisiminti naudotojo kontekstą, nustatymus ar tarpinės reikšmės.

Priešingai, be būsenos sistemos (stateless) ne saugo jokios informacijos tarp užklausų. Kiekvienas užklausimas apdorojamas kaip naujas, nepriklausomas, be žinojimo apie ankstesnius.

Flutter tai pasireiškia taip:

  • Stateful Widget — valdiklis, kuris saugo būseną (pavyzdžiui, skaitiklis, įvestas tekstas). Kai būseną keičia, valdiklis perpiešiamas iš naujo, išlaikydamas duomenis tarp atnaujinimų.
  • Stateless Widget — be būsenos valdiklis, kuris kuriamas tik remiantis įvesties parametrais ir ne saugo vidinių duomenų.

Pavyzdys:

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')),
      ],
    );
  }
}

Čia _counter būsena išlieka tarp paspaudimų, kas neįmanoma be būsenos valdiklyje.