listBuilder<T> static method

Widget listBuilder<T>({
  1. required RxList<T> dataList,
  2. required ChildItemBuilder<T> childItemBuilder,
  3. OnItemClick<T>? onItemClick,
  4. OnItemDoubleClick<T>? onItemDoubleClick,
  5. OnItemLongClick<T>? onItemLongClick,
  6. ScrollController? scrollController,
  7. EdgeInsetsGeometry? padding,
  8. ScrollPhysics? physics,
  9. bool shrinkWrap = false,
  10. bool isNeedEmpty = false,
  11. String emptyText = '暂无数据',
  12. EdgeInsets? emptyMargin,
  13. VoidCallback? onEmptyTap,
})

快速构建ListView

Implementation

static Widget listBuilder<T>({
  required RxList<T> dataList,
  required ChildItemBuilder<T> childItemBuilder,
  OnItemClick<T>? onItemClick,
  OnItemDoubleClick<T>? onItemDoubleClick,
  OnItemLongClick<T>? onItemLongClick,
  ScrollController? scrollController,
  EdgeInsetsGeometry? padding,
  ScrollPhysics? physics,
  bool shrinkWrap = false,
  bool isNeedEmpty = false,
  String emptyText = '暂无数据',
  EdgeInsets? emptyMargin,
  VoidCallback? onEmptyTap,
}) {
  emptyMargin ??= EdgeInsets.only(top: 120, bottom: 248);
  return Obx(
    () => Stack(
      children: [
        Visibility(
          visible: isNeedEmpty && dataList.isEmpty,
          child: SingleChildScrollView(
            child: PublicWidget.createEmptyView(
              emptyText: emptyText,
              margin: emptyMargin!,
              onTap: onEmptyTap,
            ),
          ),
        ),

        Visibility(
          visible: !(isNeedEmpty && dataList.isEmpty),
          child: ListView.builder(
            itemCount: dataList.length,
            controller: scrollController,
            physics: physics,
            padding: padding ?? const EdgeInsets.all(0),
            shrinkWrap: shrinkWrap,
            itemBuilder: (context, index) {
              T item = dataList[index];
              return BaseItemWidget(
                childItemBuilder: childItemBuilder,
                item: item,
                index: index,
                onItemClick: onItemClick,
                onItemDoubleClick: onItemDoubleClick,
                onItemLongClick: onItemLongClick,
              );
            },
          ),
        ),
      ],
    ),
  );
}