Sobes.tech
Junior — Middle

Vysvětlete rozdíl mezi stavem uloženým uvnitř systému a systémy, které mezi požadavky stav neuchovávají.

sobes.tech AI

Odpověď od AI

Stav, který je uložen uvnitř systému (s stavem), znamená, že systém uchovává informace o předchozích interakcích nebo datech mezi požadavky. To umožňuje systému pamatovat si kontext uživatele, nastavení nebo mezilehlé výsledky.

Naopak, systémy bez stavu (stateless) neukládají žádné informace mezi požadavky. Každý požadavek je zpracováván jako nový, nezávislý, bez znalosti předchozích.

V Flutteru se to projevuje takto:

  • Stateful Widget — widget, který uchovává stav (například čítač, vložený text). Při změně stavu se widget překreslí, zachovávajíc data mezi aktualizacemi.
  • Stateless Widget — widget bez stavu, který je sestaven pouze na základě vstupních parametrů a neukládá vnitřní data.

Příklad:

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

Zde se stav _counter udržuje mezi stisknutími tlačítka, což není možné u widgetu bez stavu.