buildLayout method

  1. @override
Widget buildLayout({
  1. required BuildContext context,
  2. required IRefreshState<T> state,
  3. required Widget itemBuilder(
    1. BuildContext,
    2. T,
    3. int
    ),
})
override

Implementation

@override
Widget buildLayout({
  required BuildContext context,
  required IRefreshState<T> state,
  required Widget Function(BuildContext, T, int) itemBuilder,
}) {
  if (state.initialRefresh) {
    return loadingBuilder?.call(context) ?? BaseWidget.loadingWidget(context);
  } else if (state.hasError && state.dataList.isEmpty) {
    return errorBuilder?.call(context) ?? BaseWidget.errorWidget(context);
  } else if (state.dataList.isEmpty) {
    return emptyBuilder?.call(context) ?? BaseWidget.emptyWidget(context);
  }

  return ListView.builder(
    controller: scrollController,
    primary: primary,
    physics: physics,
    shrinkWrap: shrinkWrap,
    padding: padding,
    itemExtent: itemExtent,
    prototypeItem: prototypeItem,
    itemCount: state.dataList.length,
    cacheExtent: cacheExtent,
    semanticChildCount: semanticChildCount,
    restorationId: restorationId,
    clipBehavior: clipBehavior,
    itemBuilder: (context, index) =>
        itemBuilder(context, state.dataList[index], index),
  );
}