PagewiseLoadController<T> class

The controller responsible for managing page loading in Pagewise

You don't have to provide a controller yourself when creating a Pagewise widget. The widget will create one for you. However you might wish to create one yourself in order to achieve some effects.

Notice though that if you provide a controller yourself, you should provide the pageFuture and pageSize parameters to the controller instead of the widget.

A possible use case of the controller is to force a reset of the loaded pages using a RefreshIndicator. you could achieve that as follows:

final _pageLoadController = PagewiseLoadController(
  pageSize: 6,
  pageFuture: BackendService.getPage

Widget build(BuildContext context) {
  return RefreshIndicator(
    onRefresh: () async {
      await this._pageLoadController.reset();
    child: PagewiseListView(
        itemBuilder: this._itemBuilder,
        pageLoadController: this._pageLoadController,

Another use case for creating the controller yourself is if you want to listen to the state of Pagewise and act accordingly. For example, you might want to show a specific widget when the list is empty In that case, you could do:

final _pageLoadController = PagewiseLoadController(
  pageSize: 6,
  pageFuture: BackendService.getPage

bool _empty = false;

void initState() {

  this._pageLoadController.addListener(() {
    if (this._pageLoadController.noItemsFound) {
      setState(() {
        this._empty = this._pageLoadController.noItemsFound;

And then in your build function you do:

if (this._empty) {
  return Text('NO ITEMS FOUND');


PagewiseLoadController({@required PageFuture<T> pageFuture, @required int pageSize})
Creates a PagewiseLoadController. [...]


error → Object
The latest error that has been faced when trying to load a page
hasMoreItems → bool
Whether there are still more items to load
loadedItems → List<T>
The list of items that have already been loaded
noItemsFound → bool
set to true if no data was found
numberOfLoadedPages → int
The number of pages that have already been loaded
pageFuture PageFuture<T>
Called whenever a new page (or batch) is to be fetched [...]
pageSize → int
The number of entries per page
hashCode → int
The hash code for this object.
read-only, inherited
hasListeners → bool
Whether any listeners are currently registered.
@protected, read-only, inherited
runtimeType → Type
A representation of the runtime type of the object.
read-only, inherited


addStartFetchListener(VoidCallback listener) → void
addStopFetchListener(VoidCallback listener) → void
dispose() → void
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded (calls to addListener and removeListener will throw after the object is disposed). [...]
fetchNewPage() → Future<void>
Fetches a new page by calling pageFuture
init() → void
Called to initialize the controller. Same as reset
removeStartFetchListener(VoidCallback listener) → void
removeStopFetchListener(VoidCallback listener) → void
reset() → void
Resets all the information of the controller
retry() → void
Attempts to retry in case an error occurred
addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
notifyListeners() → void
Call all the registered listeners.
@protected, @visibleForTesting, inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
toString() → String
Returns a string representation of this object.


operator ==(dynamic other) → bool
The equality operator.