ZdsList.builder constructor

ZdsList.builder(
  1. {required IndexedWidgetBuilder itemBuilder,
  2. Key? key,
  3. Axis scrollDirection = Axis.vertical,
  4. bool reverse = false,
  5. ScrollController? controller,
  6. bool? primary,
  7. ScrollPhysics? physics,
  8. bool shrinkWrap = false,
  9. EdgeInsetsGeometry? padding = const EdgeInsets.symmetric(horizontal: kDefaultHorizontalPadding),
  10. int? itemCount,
  11. bool addAutomaticKeepAlives = true,
  12. bool addRepaintBoundaries = true,
  13. bool addSemanticIndexes = true,
  14. double? cacheExtent,
  15. DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  16. ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
  17. String? restorationId,
  18. Clip clipBehavior = Clip.hardEdge,
  19. bool showEmpty = false}
)

Creates a ZdsList with an itemBuilder.

Extends ListView.builder with Zds styling and behavior.

To create a list builder with the items compacted together:

ZdsListGroup(
 child: ZdsList.builder(
   padding: EdgeInsets.zero,
   itemBuilder: (context, index) {
     return ZdsListTile(
       title: Text(index.toString()),
       onTap: () {},
     );
   },
   itemCount: 10,
),

Implementation

ZdsList.builder({
  required IndexedWidgetBuilder itemBuilder,
  super.key,
  super.scrollDirection,
  super.reverse,
  super.controller,
  super.primary,
  ScrollPhysics? physics,
  super.shrinkWrap,
  super.padding = const EdgeInsets.symmetric(horizontal: kDefaultHorizontalPadding),
  int? itemCount,
  super.addAutomaticKeepAlives,
  super.addRepaintBoundaries,
  super.addSemanticIndexes,
  super.cacheExtent,
  super.dragStartBehavior,
  super.keyboardDismissBehavior,
  super.restorationId,
  super.clipBehavior,
  this.showEmpty = false,
}) : super.separated(
        physics: showEmpty && (itemCount == null || itemCount == 0) ? const NeverScrollableScrollPhysics() : physics,
        itemBuilder: showEmpty && (itemCount == null || itemCount == 0) ? _emptyBuilder : itemBuilder,
        itemCount: showEmpty && (itemCount == null || itemCount == 0) ? _emptyChildLength : itemCount ?? 0,
        separatorBuilder: (_, __) {
          if (showEmpty && !(itemCount == null || itemCount == 0)) {
            return const Divider(height: 1);
          }
          return const SizedBox.shrink();
        },
      );