Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое State в Dart
State в контексте Dart и Flutter — это переменные и данные, которые хранят информацию о текущем состоянии объекта или приложения. State определяет, как выглядит и поведётся виджет в каждый конкретный момент времени.
Типы State
Stateless Widget — виджет без состояния. Это неизменяемый виджет, который не может изменяться после создания. Используется для статического контента:
class MyButton extends StatelessWidget {
final String label;
const MyButton({required this.label});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {},
child: Text(label),
);
}
}
Stateful Widget — виджет с состоянием. Он может изменяться во время жизненного цикла. Используется, когда нужна интерактивность:
class Counter extends StatefulWidget {
@override
State<Counter> createState() => _CounterState();
}
class _CounterState extends State<Counter> {
int count = 0;
@override
Widget build(BuildContext context) {
return Column(
children: [
Text("Count: $count"),
ElevatedButton(
onPressed: () {
setState(() {
count++;
});
},
child: const Text("Increment"),
),
],
);
}
}
setState() — ключевой метод
setState() — вызывает перестроение виджета при изменении данных:
setState(() {
// Изменяешь переменные здесь
userName = "John";
});
// После этого build() вызывается снова
Управление State на разных уровнях
Local State — состояние внутри одного виджета (самое простое).
Shared State — состояние, которое нужно нескольким виджетам. Решается через Provider, Riverpod или BLoC.
// Пример с Provider
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => MyModel(),
child: Consumer<MyModel>(
builder: (context, model, _) {
return Text("Value: ${model.value}");
},
),
);
}
}
Lifecycle State
Когда создаёшь Stateful Widget, его State проходит через циклы:
- initState() — вызывается один раз при создании
- build() — отрисовывает виджет
- dispose() — вызывается при удалении виджета
Понимание State критически для разработки на Flutter, так как всё основано на управлении состоянием и перестроении виджетов при его изменении.