collectionWidget method

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

Builds the concrete collection widget for state.

Implementation

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

  switch (_collectionDisplayType) {
    case CollectionWidgetStateType.list:
      return InfiniteList<T>(
        options: opts.asOrThrow<InfiniteListOptions>(),
        items: state.list,
        itemBuilder: itemBuilder,
        isRefreshable: bloc.isRefreshable,
        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,
        loading: loadingWidget(context, state),
        empty: emptyWidget(context, state),
        isEmpty: state.list.isEmpty,
        isLoading: isLoading,
        sliverBottom: sliverBottomWidget(context, state),
        sliverTop: sliverTopWidget(context, state),
      );

    case CollectionWidgetStateType.animatedList:
      return AnimatedInfiniteList<T>(
        isRefreshable: _bloc.isRefreshable,
        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,
        isLoading: isLoading,
        isEmpty: state.list.isEmpty,
        scrollController: scrollController,
        sliverTop: sliverTopWidget(context, state),
        sliverBottom: sliverBottomWidget(context, state),
        loadMoreWidgetBuilder: loadMoreWidgetBuilder,
        refreshWidgetBuilder: refreshWidgetBuilder,
        loading: loadingWidget(context, state),
        empty: emptyWidget(context, 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,
      );
  }
}