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

import 'package:flutter/material.dart';
class AlertDialogExample extends StatelessWidget {
const AlertDialogExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AlertDialog Example')),
body: Center(
child: ElevatedButton(
onPressed: () {
_showDialog(context);
},
child: const Text('Показать диалог'),
),
),
);
}
void _showDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Подтверждение'),
content: const Text('Вы уверены, что хотите продолжить?'),
actions: <Widget>[
TextButton(
child: const Text('Отмена'),
onPressed: () {
Navigator.of(context).pop(); // Закрывает диалог
},
),
TextButton(
child: const Text('Продолжить'),
onPressed: () {
// Действие при подтверждении
Navigator.of(context).pop(); // Закрывает диалог
},
),
],
);
},
);
}
}
Как работает код
showDialog: Эта функция отображает диалоговое окно. Она принимает контекст и функцию построения, которая создает виджет
AlertDialog
.AlertDialog: Основной виджет, представляющий диалоговое окно.
title: Заголовок диалогового окна, обычно используется для объяснения его назначения.
content: Основное содержание диалогового окна, в котором может быть текст или другие виджеты.
actions: Список кнопок, которые можно использовать для взаимодействия с пользователем (например, "ОК" и "Отмена").
Navigator.of(context).pop(): Метод, который закрывает диалоговое окно.
Все настройки AlertDialog
AlertDialog
Widget? icon
Описание: Значок, который отображается в верхней части диалогового окна. Может использоваться для визуального представления.
Пример:
icon: Icon(Icons.warning, color: Colors.red) // Иконка предупреждения
EdgeInsetsGeometry? iconPadding
Описание: Отступы вокруг значка.
Пример:
iconPadding: EdgeInsets.all(16.0) // Отступы для иконки
Color? iconColor
Описание: Цвет значка.
Пример:
iconColor: Colors.red // Цвет иконки
Widget? title
Описание: Заголовок диалогового окна. Может быть текстом или любым другим виджетом.
Пример:
title: Text('Подтверждение') // Заголовок диалога
EdgeInsetsGeometry? titlePadding
Описание: Отступы вокруг заголовка.
Пример:
titlePadding: EdgeInsets.all(16.0) // Отступы для заголовка
TextStyle? titleTextStyle
Описание: Стиль текста для заголовка.
Пример:
titleTextStyle: TextStyle(fontWeight: FontWeight.bold) // Стиль текста заголовка
Widget? content
Описание: Основное содержание диалогового окна.
Пример:
content: Text('Вы уверены, что хотите продолжить?') // Содержание диалога
EdgeInsetsGeometry? contentPadding
Описание: Отступы вокруг основного содержания.
Пример:
contentPadding: EdgeInsets.all(16.0) // Отступы для содержания
TextStyle? contentTextStyle
Описание: Стиль текста для основного содержания.
Пример:
contentTextStyle: TextStyle(color: Colors.black) // Стиль текста содержания
List<Widget>? actions
Описание: Список виджетов действий, обычно кнопок, которые пользователь может нажать.
Пример:
actions: [ TextButton( child: Text('Отмена'), onPressed: () { Navigator.of(context).pop(); // Закрывает диалог }, ), ]
EdgeInsetsGeometry? actionsPadding
Описание: Отступы вокруг действий.
Пример:
actionsPadding: EdgeInsets.symmetric(horizontal: 8.0) // Отступы для действий
MainAxisAlignment? actionsAlignment
Описание: Выравнивание действий в диалоговом окне.
Пример:
actionsAlignment: MainAxisAlignment.end // Выравнивание действий по правому краю
OverflowBarAlignment? actionsOverflowAlignment
Описание: Выравнивание в случае переполнения действий.
Пример:
actionsOverflowAlignment: OverflowBarAlignment.start // Выравнивание при переполнении
VerticalDirection? actionsOverflowDirection
Описание: Направление, в котором будут расположены действия при переполнении.
Пример:
actionsOverflowDirection: VerticalDirection.down // Направление вниз
double? actionsOverflowButtonSpacing
Описание: Пробел между кнопками действий при переполнении.
Пример:
actionsOverflowButtonSpacing: 8.0 // Пробел между кнопками
EdgeInsetsGeometry? buttonPadding
Описание: Отступы для кнопок действий.
Пример:
buttonPadding: EdgeInsets.all(8.0) // Отступы для кнопок
Color? backgroundColor
Описание: Цвет фона диалогового окна.
Пример:
backgroundColor: Colors.white // Цвет фона
double? elevation
Описание: Высота тени диалогового окна.
Пример:
elevation: 24.0 // Высота тени
Color? shadowColor
Описание: Цвет тени для диалогового окна.
Пример:
shadowColor: Colors.black.withOpacity(0.5) // Цвет тени
Color? surfaceTintColor
Описание: Цвет наложения для поверхности.
Пример:
surfaceTintColor: Colors.blue.withOpacity(0.1) // Цвет наложения
String? semanticLabel
Описание: Семантическая метка для вспомогательных технологий.
Пример:
semanticLabel: 'Подтверждение действия' // Семантическая метка
EdgeInsets? insetPadding
Описание: Отступы вокруг диалогового окна.
Пример:
insetPadding: EdgeInsets.all(20.0) // Отступы для окна
Clip? clipBehavior
Описание: Поведение обрезки для диалогового окна.
Пример:
clipBehavior: Clip.antiAlias // Поведение обрезки
ShapeBorder? shape
Описание: Форма диалогового окна.
Пример:
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)) // Форма с закругленными углами
AlignmentGeometry? alignment
Описание: Выравнивание диалогового окна на экране.
Пример:
alignment: Alignment.center // Выравнивание по центру
bool scrollable = false
Описание: Указывает, должно ли диалоговое окно прокручиваться, если контента слишком много.
Пример:
scrollable: true // Включить прокрутку
Заключение
AlertDialog
— это мощный инструмент для взаимодействия с пользователем в Flutter. Используйте его, чтобы предоставлять важные сообщения или собирать данные от пользователей. Настройте его параметры в соответствии с вашими требованиями, чтобы улучшить пользовательский интерфейс вашего приложения.
Last updated