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
-
- Object
- ChangeNotifier
- PagewiseLoadController
- 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