generateSliverSection<T> function

Widget generateSliverSection<T>({
  1. String? title,
  2. required List<T> items,
  3. required Widget itemBuilder(
    1. T item
    ),
  4. List<IconButtonData> actions = const [],
  5. String? footer,
})

generateSection as slivers that build only the rows in view.

Implementation

Widget generateSliverSection<T>({
  String? title,
  required List<T> items,
  required Widget Function(T item) itemBuilder,
  List<IconButtonData> actions = const [],
  String? footer,
}) {
  if (items.isEmpty) {
    return const SliverToBoxAdapter();
  }
  return SliverMainAxisGroup(
    slivers: [
      SliverToBoxAdapter(
        child: title != null
            ? ListHeader(title: title, actions: actions)
            : const ListSectionGap(),
      ),
      SliverPrismList(
        itemCount: items.length,
        itemBuilder: (_, index) => ItemPositionProvider(
          position: ItemPosition.get(index, items.length),
          child: itemBuilder(items[index]),
        ),
      ),
      if (footer != null) SliverToBoxAdapter(child: ListFooter(text: footer)),
    ],
  );
}