Такие разные Slivers. Часть 5: аналоги обычных виджетов

от автора

Мы подошли к заключительной части нашего цикла о сливер-виджетах во Flutter. За прошедшие статьи мы разобрали множество различных типов сливеров, от списков и сеток до гибких решений для управления размером и поведением элементов. В этой финальной статье мы познакомимся со сливер-виджетами, которые являются аналогами обычных (box-based) виджетов, выполняя схожие функции, но для работы в прокручиваемых структурах. Эти элементы расширяют возможности управления видимостью, анимациями и декорациями, предоставляя дополнительную гибкость при создании сложных интерфейсов.

Предыдущие материалы по теме:

SliverOpacity — изменяет непрозрачность своего дочернего sliver элемента.

 SliverOpacity(   opacity: 0.8,   sliver: SomeSliver(), )

SliverAnimatedOpacity — анимированная версия SliverOpacity, изменяет непрозрачность дочернего элемента за заданный промежуток времени.

SliverAnimatedOpacity(   opacity: _visible ? 1.0 : 0.0,   duration: Duration(seconds: 1),   sliver: SomeSliver(), )

SliverFadeTransition — также анимирует непрозрачность сливера, но уже принимает объект Animation.

SliverFadeTransition(   opacity: _animation,   sliver: SomeSliver(), )

SliverIgnorePointer — делает дочерний сливер невидимым во время hit-testing-а, то есть игнорирует нажатия.

SliverIgnorePointer(   sliver: SomeSliver(), )

SliverOffstage — размещает sliver так, как если бы он был в дереве, но ничего не отрисовывал, нажатие невозможно и не занимает никакого места в родительском элементе.

SliverOffstage(   sliver: SomeSliver(), )

SliverVisibility — показывает или скрывает дочерний сливер.

SliverVisibility(   visible: true,   sliver: SomeSliver(), )

У сливера есть дополнительные необязательные поля, которые могут быть полезны:

  • replacementSliver: сливер, который отображается, когда visible: false

  • maintainState: сохранять состояние скрытого сливера

  • maintainAnimation: продолжать анимацию скрытого сливера

  • maintainSize: сохранять размер скрытого сливера

  • maintainSemantics: сохранять семантику скрытого сливера

  • maintainInteractivity: сохранять интерактивность скрытого сливера

DecoratedSliver — добавляет декорации дочернему сливеру, использует для этого класс BoxDecoration, который также используется в DecoratedBox.

DecoratedSliver(   decoration: BoxDecoration(     border: Border.all(color: Colors.black, width: 5),     borderRadius: BorderRadius.circular(32),     gradient: LinearGradient(       colors: [Colors.orange, Colors.purple],       begin: Alignment.topLeft,       end: Alignment.bottomRight,     ),   ),   sliver: SomeSliver(), )

Последний добавленный сливер, SliverFloatingHeader, появился в совсем недавней версии Flutter — 3.27.0, поэтому есть немалая вероятность, что мы еще увидим новые сливер-веджеты во фреймворке. Но пока что на этом завершается наш обзор. Мы рассмотрели все существующие сливер-виджеты, и теперь, обладая представлением о их возможностях, вы можете выбирать оптимальные решения для своих проектов. С помощью сливеров вы получите большую гибкость в управлении прокруткой и компоновкой, делая ваши интерфейсы более интерактивными и отзывчивыми.


ссылка на оригинал статьи https://habr.com/ru/articles/884580/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *