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 GridView.builder(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
      crossAxisCount: crossAxisCount,
      mainAxisSpacing: mainAxisSpacing,
      crossAxisSpacing: crossAxisSpacing,
    ),
    itemCount: state.dataList.length,
    itemBuilder: (context, index) =>
        itemBuilder(context, state.dataList[index], index),
  );
}