🧩IconButton()
Что такое IconButton
IconButton
IconButton
в Flutter — это кнопка, которая отображает иконку и реагирует на нажатия. Она предназначена для выполнения действий без необходимости отображать текст, что делает интерфейс более компактным и эстетичным. Обычно IconButton
используется в навигации, меню и других контекстах, где иконка может быть достаточно информативной.
Пример использования
Вот пример того, как можно использовать IconButton
в приложении Flutter:

import 'package:flutter/material.dart';
class IconButtonExample extends StatelessWidget {
const IconButtonExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('IconButton Example')),
body: Center(
child: IconButton(
icon: const Icon(Icons.favorite), // Иконка
tooltip: 'Favorite', // Подсказка при наведении
onPressed: () {
// Действие при нажатии
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Favorite clicked!')),
);
},
),
),
);
}
}
Как работает код
IconButton: Основной виджет кнопки, отображающий иконку.
icon: Определяет, какую иконку будет отображать кнопка. В примере мы используем иконку сердечка.
onPressed: Функция, которая будет вызвана, когда кнопка будет нажата. Здесь мы показываем уведомление.
tooltip: Текст, который будет отображаться, когда пользователь наведёт курсор на кнопку.
Зачем это нужно
IconButton
удобно использовать, когда вы хотите создать интуитивно понятные действия, которые не требуют текста. Это помогает сократить место на экране и позволяет пользователю быстро понять, что означает каждая кнопка, исходя из её иконки. Применяется в случаях, когда важна компактность интерфейса, например:
В строках инструментов.
В меню навигации.
В качестве действий в карточках и списках.
Все настройки IconButton
IconButton
double? iconSize
Описание: Размер иконки. Если не указан, используется значение по умолчанию.
Пример:
iconSize: 30.0 // Установка размера иконки
VisualDensity? visualDensity
Описание: Определяет плотность визуальных элементов. Может использоваться для настройки расстояния между элементами.
Пример:
visualDensity: VisualDensity(horizontal: 0, vertical: -2) // Плотность визуальных элементов
EdgeInsetsGeometry? padding
Описание: Отступы вокруг иконки внутри кнопки. Позволяет настроить пространство вокруг иконки.
Пример:
padding: EdgeInsets.all(10.0) // Отступы вокруг иконки
AlignmentGeometry? alignment
Описание: Определяет выравнивание иконки внутри кнопки. Полезно, если вы хотите изменить позицию иконки.
Пример:
alignment: Alignment.center // Центрирование иконки
double? splashRadius
Описание: Радиус эффекта всплеска при нажатии. Определяет, насколько далеко будет распространяться эффект при нажатии.
Пример:
splashRadius: 20.0 // Установка радиуса всплеска
Color? color
Описание: Цвет иконки. Позволяет изменить цвет в зависимости от состояния.
Пример:
color: Colors.red // Установка цвета иконки
Color? focusColor
Описание: Цвет, который будет использоваться, когда кнопка в фокусе.
Пример:
focusColor: Colors.blue // Цвет при фокусе
Color? hoverColor
Описание: Цвет, который будет использоваться, когда пользователь наводит курсор на кнопку.
Пример:
hoverColor: Colors.green // Цвет при наведении
Color? highlightColor
Описание: Цвет, который будет использоваться при нажатии на кнопку.
Пример:
highlightColor: Colors.yellow // Цвет при нажатии
Color? splashColor
Описание: Цвет эффекта всплеска при нажатии на кнопку.
Пример:
splashColor: Colors.blueAccent // Цвет всплеска
Color? disabledColor
Описание: Цвет, который будет использоваться, когда кнопка отключена.
Пример:
disabledColor: Colors.grey // Цвет для отключённого состояния
required void Function()? onPressed
Описание: Функция, которая будет вызвана при нажатии на кнопку. Обязательный параметр.
Пример:
onPressed: () { print('IconButton Pressed'); // Действие при нажатии }
MouseCursor? mouseCursor
Описание: Курсор мыши, который будет отображаться, когда пользователь наводит курсор на кнопку.
Пример:
mouseCursor: SystemMouseCursors.click // Курсор при наведении
FocusNode? focusNode
Описание: Указывает на узел фокуса для управления фокусом этой кнопки.
Пример:
focusNode: FocusNode() // Указатель на узел фокуса
bool autofocus = false
Описание: Если true, кнопка автоматически получит фокус при загрузке.
Пример:
autofocus: true // Автофокус при загрузке
String? tooltip
Описание: Текст подсказки, который будет отображаться при наведении на кнопку.
Пример:
tooltip: 'Click me' // Подсказка при наведении
bool? enableFeedback
Описание: Указывает, нужно ли предоставлять тактильную обратную связь при нажатии.
Пример:
enableFeedback: true // Включение тактильной обратной связи
BoxConstraints? constraints
Описание: Ограничения для размера кнопки. Позволяет задать максимальные и минимальные размеры.
Пример:
constraints: BoxConstraints(maxWidth: 100, maxHeight: 100) // Ограничения по размеру
ButtonStyle? style
Описание: Стиль кнопки, который позволяет настраивать её внешний вид.
Пример:
style: IconButton.styleFrom( backgroundColor: Colors.blue // Установка фона кнопки )
bool? isSelected
Описание: Указывает, выбрана ли кнопка. Используется для визуального изменения состояния.
Пример:
isSelected: true // Установка состояния выбора
Widget? selectedIcon
Описание: Иконка, которая будет отображаться, когда кнопка выбрана.
Пример:
selectedIcon: Icon(Icons.favorite) // Иконка для выбранного состояния
required Widget icon
Описание: Обязательный параметр, который указывает, какую иконку будет отображать кнопка.
Пример:
icon: Icon(Icons.favorite) // Установка иконки
Заключение
IconButton
— это простой, но мощный инструмент для создания интерактивных элементов в вашем приложении Flutter. Он позволяет вам легко добавлять иконки, которые могут выполнять действия, и при этом обеспечивать интуитивно понятный интерфейс. Возможности настройки делают его гибким для использования в самых разных контекстах, от кнопок навигации до элементов управления.
Last updated