getListView method
Widget
getListView({
- required Widget itemBuilder(),
- void onRefresh()?,
- int pageSize = 10,
- FirestoreLoadingBuilder? loadingBuilder,
- FirestoreErrorBuilder? errorBuilder,
- FirestoreEmptyBuilder? emptyBuilder,
- Axis scrollDirection = Axis.vertical,
- bool reverse = false,
- ScrollController? controller,
- bool? primary,
- ScrollPhysics? physics,
- bool shrinkWrap = false,
- EdgeInsetsGeometry? padding,
- double? itemExtent,
- Widget? prototypeItem,
- bool addAutomaticKeepAlives = true,
- bool addRepaintBoundaries = true,
- bool addSemanticIndexes = true,
- double? cacheExtent,
- int? semanticChildCount,
- DragStartBehavior dragStartBehavior = DragStartBehavior.start,
- ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
- String? restorationId,
- Clip clipBehavior = Clip.hardEdge,
- (String, Object?)? equalWith,
- List<
(String, Object?)> ? filters, - (String, bool)? orderBy,
To build a list view with pagination
Implementation
Widget getListView({
required Widget Function(BuildContext, FireDocTuple) itemBuilder,
void Function(BuildContext)? onRefresh,
int pageSize = 10,
FirestoreLoadingBuilder? loadingBuilder,
FirestoreErrorBuilder? errorBuilder,
FirestoreEmptyBuilder? emptyBuilder,
Axis scrollDirection = Axis.vertical,
bool reverse = false,
ScrollController? controller,
bool? primary,
ScrollPhysics? physics,
bool shrinkWrap = false,
EdgeInsetsGeometry? padding,
double? itemExtent,
Widget? prototypeItem,
bool addAutomaticKeepAlives = true,
bool addRepaintBoundaries = true,
bool addSemanticIndexes = true,
double? cacheExtent,
int? semanticChildCount,
DragStartBehavior dragStartBehavior = DragStartBehavior.start,
ScrollViewKeyboardDismissBehavior keyboardDismissBehavior =
ScrollViewKeyboardDismissBehavior.manual,
String? restorationId,
Clip clipBehavior = Clip.hardEdge,
// TODO: remove this and use filters
(String, Object?)? equalWith,
List<(String, Object?)>? filters,
(String, bool)? orderBy,
}) {
Query query = _reference;
// filter
if (equalWith != null) {
query = query.where(equalWith.$1, isEqualTo: equalWith.$2);
}
if (filters != null) {
for (final filter in filters) {
query = query.where(filter.$1, isEqualTo: filter.$2);
}
}
if (orderBy != null) {
query = query.orderBy(orderBy.$1, descending: orderBy.$2);
}
return FirestoreListView(
query: query,
onRefresh: onRefresh,
pageSize: pageSize,
loadingBuilder: loadingBuilder,
errorBuilder: errorBuilder,
emptyBuilder: emptyBuilder,
scrollDirection: scrollDirection,
reverse: reverse,
controller: controller,
primary: primary,
physics: physics,
shrinkWrap: shrinkWrap,
padding: padding,
itemExtent: itemExtent,
prototypeItem: prototypeItem,
addAutomaticKeepAlives: addAutomaticKeepAlives,
addRepaintBoundaries: addRepaintBoundaries,
addSemanticIndexes: addSemanticIndexes,
cacheExtent: cacheExtent,
semanticChildCount: semanticChildCount,
dragStartBehavior: dragStartBehavior,
keyboardDismissBehavior: keyboardDismissBehavior,
restorationId: restorationId,
clipBehavior: clipBehavior,
itemBuilder: (context, snapshot) {
final casedSnapshot =
snapshot as QueryDocumentSnapshot<Map<String, dynamic>>;
return itemBuilder(
context, FireDocTuple(casedSnapshot, FireDoc.castMap));
});
}