Back to questions
Яндекс
Junior — Middle
90
Объясните концепцию StatefulWidget в Flutter и в чем его отличие от StatelessWidget?
Companies where asked
mobifitness
Grotem
Верме
Answer from AI
sobes.tech AI
В Flutter StatefulWidget — это виджет, который может изменять своё состояние во время работы приложения. Он хранит состояние в отдельном объекте State, и при изменении этого состояния вызывается метод setState(), который обновляет интерфейс.
В отличие от него, StatelessWidget не имеет внутреннего состояния и всегда строится на основе переданных ему параметров. Он не меняется после создания.
Пример:
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('Счётчик: \\$_counter'),
ElevatedButton(onPressed: _increment, child: Text('Увеличить')),
],
);
}
}
Здесь CounterWidget — StatefulWidget, потому что значение счётчика меняется и влияет на UI. Если бы состояние не менялось, можно было бы использовать StatelessWidget.