listDocuments method
Implementation
Future<void> listDocuments() async {
// print('Offset: ${_offset + widget.itemsPerPage}');
// print('Documents total: ${_documentList.total}');
// print('Documents length: ${_documentList.documents.length}');
if (_pageControllerDirection == PageControllerDirection.previous) {
// START BUMPER
_offset = _offset - widget.itemsPerPage;
if (_offset <= 0) {
_offset = 0;
widget.onStartCallback != null
? widget.onStartCallback!(_documentList.documents as List<T>)
: null;
// Bumper on empty.
if (_documentList.total == 0) return;
widget.pageController?._isAtStart = true;
widget.pageController?._isAtEnd = false;
}
} else if (_pageControllerDirection == PageControllerDirection.next) {
// END BUMPER
if (_offset + _documentList.documents.length >= _documentList.total) {
widget.onEndCallback != null
? widget.onEndCallback!(_documentList.documents as List<T>)
: null;
widget.pageController?._isAtEnd = true;
widget.pageController?._isAtStart = false;
return;
}
_offset = _offset + widget.itemsPerPage;
if (_offset >= _documentList.total) _offset = _offset - 1;
} else if (_pageControllerDirection ==
PageControllerDirection.updateCurrent) {}
try {
_error = null;
_stackTrace = null;
setState(() => _widgetStates = WidgetStates.waiting);
final documentList = await widget.database.listDocuments(
collectionId: widget.collectionId,
limit: widget.itemsPerPage,
offset: _offset,
orderTypes: widget.orderTypes,
orderAttributes: widget.orderAttributes,
queries: widget.queries,
);
_documentList = documentList;
setState(() => _widgetStates = WidgetStates.data);
} catch (e, s) {
_error = e;
_stackTrace = s;
if (e is TimeoutException) {
setState(() => _widgetStates = WidgetStates.timeout);
} else {
setState(() => _widgetStates = WidgetStates.error);
}
rethrow;
}
}