Sobes.tech
Junior — Middle

Vysvětlete koncept StatefulWidget ve Flutteru a v čem se liší od StatelessWidget?

sobes.tech AI

Odpověď od AI

Ve Flutteru je StatefulWidget widget, který může během běhu aplikace měnit svůj stav. Ukládá svůj stav v samostatném objektu State, a když se tento stav změní, volá se metoda setState(), která aktualizuje rozhraní.

Na rozdíl od toho, StatelessWidget nemá vnitřní stav a je vždy sestaven na základě předaných parametrů. Po vytvoření se nemění.

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('Čítač: \\$_counter'),
        ElevatedButton(onPressed: _increment, child: Text('Zvýšiť')),
      ],
    );
  }
}

Zde je CounterWidget StatefulWidget, protože hodnota čítače se mění a ovlivňuje UI. Pokud by se stav neměnil, mohl by být použit StatelessWidget.