buildSliver method

List<Widget> buildSliver()

Implementation

List<Widget> buildSliver() {
  final state = viewModel.getPaginationState();

  if (state == PaginationState.loading) {
    return [
      SliverFillRemaining(
        hasScrollBody: false,
        child: _ProgressState(
          padding: viewModel.padding,
          progressIndicator: widget.progressIndicator,
        ),
      ),
    ];
  }

  if (state == PaginationState.empty) {
    return [
      SliverFillRemaining(
        hasScrollBody: false,
        child: viewModel.emptyStateWidget,
      ),
    ];
  }

  if (state == PaginationState.error) {
    return [
      SliverFillRemaining(
        hasScrollBody: false,
        child: viewModel.errorWidget,
      ),
    ];
  }

  return [
    if (viewModel.header != null) SliverToBoxAdapter(child: viewModel.header),
    SliverPadding(
      padding: viewModel.padding ?? EdgeInsets.zero,
      sliver: SliverList(
        delegate: SliverChildBuilderDelegate(
          sliverDelegateBuilder,
          childCount: _computeActualChildCount(viewModel.itemsCount),
        ),
      ),
    ),
    // ignore: avoid-returning-widgets
    if (viewModel.footer != null) buildFooter(),
  ];
}