Найти в Дзене
Davidenko_S94

Виджеты в Flutter: Stateless и Stateful виджеты

## Введение Flutter - это современный фреймворк для разработки мобильных приложений, и ключевой концепт в Flutter - это виджеты. Виджеты в Flutter делятся на два основных типа: Stateless (без состояния) и Stateful (с состоянием). ## Stateless виджеты Stateless виджеты - это виджеты, состояние которых не меняется в течение времени. Они идеально подходят для статического содержимого. ### Пример Stateless виджета import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Пример Stateless виджета')), body: Center( child: Text('Привет, Flutter!'), ), ), ); } } ### Особенности Stateless виджетов - Не имеют состояния, которое изменяется во время выполнения. - Перестраиваются только при изменении входящих данных (например, родительского виджета). ## Stateful виджеты St
Оглавление

## Введение

Flutter - это современный фреймворк для разработки мобильных приложений, и ключевой концепт в Flutter - это виджеты. Виджеты в Flutter делятся на два основных типа: Stateless (без состояния) и Stateful (с состоянием).

## Stateless виджеты

Stateless виджеты - это виджеты, состояние которых не меняется в течение времени. Они идеально подходят для статического содержимого.

### Пример Stateless виджета

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Пример Stateless виджета')),
body: Center(
child: Text('Привет, Flutter!'),
),
),
);
}
}

### Особенности Stateless виджетов

- Не имеют состояния, которое изменяется во время выполнения.

- Перестраиваются только при изменении входящих данных (например, родительского виджета).

## Stateful виджеты

Stateful виджеты используются, когда состояние виджета может изменяться во время выполнения программы.

### Пример Stateful виджета

class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Вы нажали на кнопку столько раз:'),
Text('$_counter', style: Theme.of(context).textTheme.headline4),
FlatButton(
onPressed: _incrementCounter,
child: Text('Увеличить'),
color: Colors.blue,
textColor: Colors.white,
),
],
);
}
}

### Особенности Stateful виджетов

- Имеют изменяемое состояние.

- Состояние сохраняется в объекте `State`.

- Используют метод `setState` для обновления интерфейса при изменении состояния.

## Когда использовать Stateless и Stateful виджеты

- Используйте Stateless виджеты для статических экранов или элементов, которые не изменяются после их первоначальной отрисовки.

- Используйте Stateful виджеты, когда интерфейс должен отвечать на изменения данных или других событий во время выполнения (например, при взаимодействии с пользователем).

## Заключение

Понимание различий между Stateless и Stateful виджетами является ключевым для эффективной работы с Flutter. Правильный выбор типа виджета влияет на управление состоянием приложения и его производительность.