StatelessWidget зависит только от входных параметров; StatefulWidget создаёт State объект, который живёт дольше и может вызывать setState.
Разбор
- State переживает rebuild widget-конфига при том же identity.
- Локальные анимации/контроллеры часто в State.
- Бизнес-state выносят в отдельный слой (Provider/Bloc).
- Не храните огромные данные только в State экрана без архитектуры.
Пример
class Counter extends StatefulWidget {
@override
State<Counter> createState() => _CounterState();
}
class _CounterState extends State<Counter> {
int n = 0;
@override
Widget build(BuildContext context) => Text('$n');
}
Итог
Stateless — чистая функция props; Stateful — локальный State с setState.