buildContentSliver method

Widget buildContentSliver(
  1. BuildContext context
)

Builds the main content sliver.

Implementation

Widget buildContentSliver(BuildContext context) {
  if (error != null) {
    return SliverToBoxAdapter(
      child: Container(
        key: const ValueKey('list_error_message'),
        child: errorStateBuilder?.call(context, error!) ??
            TListTheme.buildErrorState(context.colors, title: error!.title, message: error!.message),
      ),
    );
  }

  if (!loading && error == null && items.isEmpty) {
    return SliverToBoxAdapter(
      child: Container(
        key: const ValueKey('list_empty_message'),
        child: emptyStateBuilder?.call(context) ?? TListTheme.buildEmptyState(context.colors),
      ),
    );
  }

  if (reorderable) {
    return SliverReorderableList(
      itemBuilder: buildItem,
      itemCount: items.length,
      onReorder: (int oldIndex, int newIndex) {
        if (newIndex > oldIndex) {
          newIndex -= 1;
        }
        if (oldIndex >= 0 && oldIndex < items.length && newIndex >= 0 && newIndex < items.length) {
          onReorder?.call(oldIndex, newIndex);
        }
      },
      proxyDecorator: dragProxyDecorator,
    );
  } else if (grid != null) {
    final config = gridDelegate!(context);

    if (grid == TGridMode.masonry) {
      return SliverMasonryGrid(
        delegate: SliverChildBuilderDelegate(buildItem, childCount: items.length),
        gridDelegate: config.simpleGridDelegate,
        mainAxisSpacing: config.mainAxisSpacing,
        crossAxisSpacing: config.crossAxisSpacing,
      );
    } else if (grid == TGridMode.aligned) {
      return SliverAlignedGrid(
        itemBuilder: buildItem,
        itemCount: items.length,
        gridDelegate: config.simpleGridDelegate,
        mainAxisSpacing: config.mainAxisSpacing,
        crossAxisSpacing: config.crossAxisSpacing,
      );
    }
  } else if (listSeparatorBuilder != null) {
    return SliverList.separated(
      itemCount: items.length,
      itemBuilder: buildItem,
      separatorBuilder: listSeparatorBuilder!,
    );
  } else {
    return SliverList.builder(
      itemCount: items.length,
      itemBuilder: buildItem,
    );
  }

  throw UnimplementedError();
}