StickyHeader (Закреплённый заголовок)
Виджет StickyHeader — это особый тип виджета, который позволяет верхней части прокручиваемого списка “прилипать” к верхней части экрана, оставаясь видимой, пока пользователь прокручивает остальное содержимое.
Таким образом, заголовок остаётся зафиксированным, обеспечивая постоянный контекст или элементы навигации.
Например, в приложениях с большим объёмом данных (например, таблицы), закреплённые заголовки позволяют колонкам оставаться видимыми при прокрутке, повышая удобство и читаемость интерфейса.
Виджет StickyHeader состоит из двух основных секций:
- StickyHeader Header (Заголовок): часть, которая остаётся закреплённой сверху при прокрутке. Обычно используется для отображения заголовков, названий разделов или важной информации.
- StickyHeader Content (Содержим ое): прокручиваемая часть (например, ListView или GridView), где располагается основной контент. Пользователь может прокручивать её, в то время как заголовок остаётся на месте.
Чтобы виджет StickyHeader работал корректно, его необходимо размещать внутри прокручиваемого виджета (например, Column или ListView) и сделать этот контейнер Primary scrollable widget.
Если используете Column, убедитесь, что она действительно прокручивается, иначе эффект закрепления не будет работать.
Добавление виджета StickyHeader
Рассмотрим пример, в котором StickyHeader используется как замена AppBar, и в верхней части закрепляется строка поиска.
Шаги по созданию:
- Убедитесь, что на странице есть виджет Column. Если его нет — добавьте. Сделайте его scrollable и Primary.
- Добавьте StickyHeader из вкладки Base Elements.
- В секции StickyHeader Header поместите элемент, который должен оставаться закреплённым (в нашем примере — строка поиска).
- В секции StickyHeader Content добавьте ListView > Container для отображения списка пользователей.
- Настройте отображение списка пользователей в ListView через запрос данных.
Другой пример
Когда нужно отобразить длинный список с категориями (например, список контактов, разделённый по буквам A, B, C...), можно использовать StickyHeader, чтобы закрепить заголовок текущей категории при прокрутке.
Цель — сгенерировать виджеты StickyHeader для каждой буквы. В каждом из них заголовок — это сама буква, а содержимое — список контактов, начинающихся с этой буквы.
Шаги по реализации:
-
Подготовьте список букв (A–Z). Можно хранить его в переменной AppState.

-
Подготовьте список контактов.

-
Добавьте ListView > StickyHeader:
- В ListView создайте динамические дочерние элементы из переменной, содержащей буквы.
- Внутри StickyHeader Header разместите виджет, отображающий текущую букву.
- В секции StickyHeader Content добавьте ListView > Container, чтобы отобразить список контактов для каждой буквы.
- Создайте динамические дочерние элементы на основе переменной с контактами.
- При генерации отфильтруйте список по первой букве имени, используя Inline Function.
- Отобразите информацию о контакте (например, имя) внутри интерфейса.