Всем привет! Двигаемся дальше в изучении сливеров, в прошлых статьях мы познакомились со сливерами-списками, посмотрели на их базовые классы и делегаты. В этой статье будем рассматривать сливеры, которые помогают управлять отступами, позиционированием и распределением пространства. Эти виджеты обеспечивают гибкость при настройке компоновки и позволяют создавать более точные и адаптивные интерфейсы.
Предыдущие материалы по теме:
Такие разные Slivers. Часть 1: обзор и применение во Flutter
Такие разные Slivers. Часть 2: базовые классы и делегаты

SliverPadding — добавляет отступы для другого сливера.
SliverPadding(
padding: const EdgeInsets.all(50.0),
sliver: SomeSliver(),
),
SliverSafeArea — оборачивает дочерний сливер в достаточный padding, чтобы избежать перекрытий операционной системы
SliverSafeArea(
sliver: SomeSliver(),
),

SliverConstrainedCrossAxis — ограничивает размер дочернего sliver по поперечной оси.
SliverConstrainedCrossAxis(
maxExtent: 250,
sliver: SomeSliver(),
),

SliverMainAxisGroup — размещает множество дочерних сливеров в линейном массиве вдоль главной оси, один за другим. То же самое делает SliverList, но только для обычных виджетов, данный сливер же работает со сливерами, которые в том числе могут быть нефиксированной высоты. Можно использовать, например, чтобы добавить закрепленный заголовок только для части контента в скролле.
SliverMainAxisGroup(
slivers: [
SomeSliver(),
AnotherSliver(),
],
),

SliverCrossAxisGroup — размещает дочерние сливеры в массиве по поперечной оси.
SliverCrossAxisGroup(
slivers: [
SomeSliver(),
AnotherSliver(),
],
),

SliverCrossAxisExpanded — устанавливает flex коэффициент для распределения пространства в SliverCrossAxisGroup.
SliverCrossAxisGroup(
slivers: [
SliverCrossAxisExpanded(
flex: 3,
sliver: SomeSliver(),
),
SliverCrossAxisExpanded(
flex: 2,
sliver: AnotherSliver(),
),
],
),
SliverToBoxAdapter — отображает один виджет, что позволяет обычным виджетам работать со сливерами.
SliverToBoxAdapter(
child: Container(
color: Colors.orange,
child: const Text('Item'),
),
),
SliverFillRemaining — заполняет оставшееся пространство в области просмотра.
SliverFillRemaining(
child: Container(
color: orange,
child: const Text('Item'),
),
),
В следующей части познакомимся со сливерами для более гибкого управления размерами и поведением элементов во время прокрутки.