toPaginatedListView method
Widget
toPaginatedListView({
- required Widget itemBuilder(
- BuildContext context,
- T item,
- int index
- required VoidCallback onLoadMore,
- required bool isLoading,
- Widget? emptyStateWidget,
- String defaultEmptyMessage = "There is no data to show",
- Widget? loadingIndicator,
- Axis scrollDirection = Axis.vertical,
- bool shrinkWrap = false,
- bool primary = false,
- ScrollPhysics? physics,
Builds a paginated ListView with an optional empty state
Implementation
Widget toPaginatedListView({
required Widget Function(BuildContext context, T item, int index) itemBuilder,
required VoidCallback onLoadMore,
required bool isLoading,
Widget? emptyStateWidget,
String defaultEmptyMessage = "There is no data to show",
Widget? loadingIndicator,
Axis scrollDirection = Axis.vertical,
bool shrinkWrap = false,
bool primary = false,
ScrollPhysics? physics,
}) {
if ((this == null || this!.isEmpty) && !isLoading) {
return emptyStateWidget ??
Center(
child: Text(
defaultEmptyMessage,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 16, color: Colors.grey),
),
);
}
return ListView.builder(
itemCount: (this?.length ?? 0) + (isLoading ? 1 : 0),
scrollDirection: scrollDirection,
shrinkWrap: shrinkWrap,
primary: primary,
physics: physics,
itemBuilder: (context, index) {
if (index == this?.length) {
onLoadMore();
return loadingIndicator ?? Center(child: CircularProgressIndicator());
}
return itemBuilder(context, this![index], index);
},
);
}