buildSlivers method

  1. @override
List<Widget> buildSlivers(
  1. BuildContext context
)
override

Build the list of widgets to place inside the viewport.

Subclasses should override this method to build the slivers for the inside of the viewport.

To learn more about slivers, see CustomScrollView.slivers.

Implementation

@override
List<Widget> buildSlivers(BuildContext context) {
  var sliver = buildChildLayout(context);
  var effectivePadding = padding;
  if (padding == null) {
    final mediaQuery = MediaQuery.maybeOf(context);
    if (mediaQuery != null) {
      // Automatically pad sliver with padding from MediaQuery.
      final mediaQueryHorizontalPadding =
          mediaQuery.padding.copyWith(top: 0.0, bottom: 0.0);
      final mediaQueryVerticalPadding =
          mediaQuery.padding.copyWith(left: 0.0, right: 0.0);
      // Consume the main axis padding with SliverPadding.
      effectivePadding = scrollDirection == Axis.vertical
          ? mediaQueryVerticalPadding
          : mediaQueryHorizontalPadding;
      // Leave behind the cross axis padding.
      sliver = MediaQuery(
        data: mediaQuery.copyWith(
          padding: scrollDirection == Axis.vertical
              ? mediaQueryHorizontalPadding
              : mediaQueryVerticalPadding,
        ),
        child: sliver,
      );
    }
  }

  if (effectivePadding != null) {
    sliver = SliverPadding(padding: effectivePadding, sliver: sliver);
  }
  return <Widget>[sliver];
}