collectionWidget method

Widget collectionWidget(
  1. BuildContext context,
  2. ListState<T> state
)

Implementation

Widget collectionWidget(BuildContext context, ListState<T> state) {
  final opts = _collectionOptions;
  opts.assertCorrectType(_collectionDisplayType);
  opts.verifyOrThrow(_collectionDisplayType);

  switch (_collectionDisplayType) {
    case CollectionWidgetStateType.list:
      return InfiniteList<T>(
        options: opts.asOrThrow<InfiniteListOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        scrollController: scrollController,
        separatorBuilder: separatorBuilder,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
      );

    case CollectionWidgetStateType.sliverList:
      return SliverInfiniteList<T>(
        options: opts.asOrThrow<SliverInfiniteListOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        scrollController: scrollController,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
        topWidgetBuilder: (c) => topWidget(c, state),
        bottomWidgetBuilder: (c) => bottomWidget(c, state),
      );

    case CollectionWidgetStateType.animatedList:
      return AnimatedInfiniteList<T>(
        options: opts.asOrThrow<AnimatedInfiniteListOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        scrollController: scrollController,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadTopData: null,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
        separatorBuilder: separatorBuilder,
        deleteAnimation: deleteAnimation,
        insertAnimation: insertAnimation,
      );

    case CollectionWidgetStateType.animatedSliverList:
      return AnimatedSliverInfiniteList<T>(
        options: opts.asOrThrow<AnimatedSliverInfiniteListOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        separatorBuilder: separatorBuilder,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadTopData: null,
        scrollController: scrollController,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
        topWidgetBuilder: (c) => topWidget(c, state),
        bottomWidgetBuilder: (c) => bottomWidget(c, state),
      );

    case CollectionWidgetStateType.grid:
      return InfiniteGrid<T>(
        options: opts.asOrThrow<InfiniteGridOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        scrollController: scrollController,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
      );

    case CollectionWidgetStateType.sliverGrid:
      return SliverInfiniteGrid<T>(
        options: opts.asOrThrow<SliverInfiniteGridOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        bloc: bloc.infiniteListBloc,
        scrollController: scrollController,
        refreshOnSwipe: bloc.isRefreshable ? refreshData : null,
        loadBottomData: bloc.isInfinite ? loadNextPage : null,
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
        topWidgetBuilder: (c) => topWidget(c, state),
        bottomWidgetBuilder: (c) => bottomWidget(c, state),
      );
  }
}