Назад к вопросам
Junior
151
questionbank
Какие виджеты дерева пользовательского интерфейса во Flutter тебе известны?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
StatelessWidget и StatefulWidget.
StatelessWidget не имеет изменяемого состояния. Его конфигурация определяется параметрами конструктора.
StatefulWidget имеет изменяемое состояние, которое может меняться в течение жизненного цикла виджета. Управляется парой виджетов: сам StatefulWidget (неизменяемый) и State (изменяемое состояние).
Вот примеры других виджетов:
Макет (Layout):
PaddingCenterColumnRowStackExpandedFlexible
Текст и изображения:
TextImageIcon
Кнопки:
RaisedButton(устарел, использоватьElevatedButton)FlatButton(устарел, использоватьTextButton)OutlineButton(устарел, использоватьOutlinedButton)IconButtonFloatingActionButton
Списки и скроллинг:
ListViewGridViewSingleChildScrollView
Другие:
ContainerScaffoldAppBarSizedBox
Пример использования StatelessWidget:
// Простой StatelessWidget, отображающий текст
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: Scaffold(
appBar: AppBar(
title: Text('Hello World'),
),
body: Center(
child: Text('Welcome to Flutter!'),
),
),
);
}
}
Пример использования StatefulWidget:
// StatefulWidget с изменяющимся состоянием
class CounterPage extends StatefulWidget {
@override
_CounterPageState createState() => _CounterPageState();
}
class _CounterPageState extends State<CounterPage> {
int _counter = 0; // Состояние виджета
void _incrementCounter() {
setState(() { // Обновление состояния и перерисовка
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Counter'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('You have pushed the button this many times:'),
Text(
'$_counter', // Отображение текущего состояния
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter, // Вызов метода для изменения состояния
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}