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
);

@override
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;

@override
void initState() {
  super.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');
}
Inheritance
Implementers

Constructors

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

Properties

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

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
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 will throw after the object is disposed).
override
fetchNewPage() Future<void>
Fetches a new page by calling pageFuture
init() → void
Called to initialize the controller. Same as reset
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
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
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited