Skip to content

REFACTOR: Заменить SnackBar на более подходящую систему уведомлений #36

@firedotguy

Description

@firedotguy

🧩 Описание

В данный момент все системные сообщения — ошибки, предупреждения и информационные уведомления — отображаются через SnackBar.
Однако SnackBar не подходит под общую тематику сайта и имеет несколько проблем с удобством и видимостью.


⚠️ Проблема

  • SnackBar появляется внизу экрана и часто скрывается под диалоговыми окнами.

  • Критические ошибки выглядят слишком “легко” и могут быть пропущены пользователем.

  • Автоматически исчезают, даже если пользователю нужно время на чтение.

  • В целом визуально не соответствуют стилю интерфейса и теряются в фоне.


💡 Возможные альтернативы

Вариант Описание Преимущества Недостатки
Toast-уведомления (в верхнем правом углу) Лёгкие всплывающие уведомления, не блокируют интерфейс. Хорошо заметны, можно показывать несколько сразу, легко стилизовать. Можно случайно не заметить при длинных действиях.
Диалоговые окна (AlertDialog) Для критических ошибок или подтверждений. Невозможно пропустить, хорошо вписываются в модальную логику. Блокируют взаимодействие, не подходят для частых уведомлений.
Встроенные баннеры внутри карточек/страниц Отображаются прямо в контексте действия (например, в окне ONT). Контекстные, легко читаются, не мешают пользователю. Требуют доработки макета.
Центр уведомлений / история событий Отдельная панель с журналом последних сообщений. Можно просмотреть историю, не пропустить важное. Более сложная реализация.

🧭 Предлагаемое решение

Использовать встроенные баннеры (inline banners) для ошибок и предупреждений,
а для коротких сообщений (например, “Настройки сохранены”) — toast-уведомления через библиотеку
fluttertoast, awesome_notifications или собственный кастомный виджет.


🧱 Технические заметки

  • Заменить прямые вызовы ScaffoldMessenger.of(context).showSnackBar() на универсальный сервис NotificationService,
    который будет сам выбирать подходящий тип уведомления.

  • Добавить поддержку тем: success, warning, error, info.


Metadata

Metadata

Assignees

No one assigned

    Labels

    UIИнтерфейс, Flutter-виджеты и стилиaiIssue создана или предложена нейросетьюrefactorПереработка кода без изменения логики

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions