scrollable_positioned_list_extended
A flutter list that allows scrolling to a specific item in the list.
Also allows determining what items are currently visible.
Note
This is an extension of scrollable_positioned_list, which exposes helper methods like scrollToMax
extent, jumpToMax
extent and also scrollListener
to listen notifications which has not implemented in that yet.
Added Features
scrollToMax
For scrolling to maximum extent.jumpToMax
For jumping to maximum extent.scrollToMin
For scrolling to minimum extent.jumpToMin
For jumping to minimum extent.scrollListener
For listeningScrollNotifications
like current offsetScrollPostition
see here.
Usage
A ScrollablePositionedList
works much like the builder version of ListView
except that the list can be scrolled or jumped to a specific item.
Example
A ScrollablePositionedList
can be created with:
final ItemScrollController itemScrollController = ItemScrollController();
final ItemPositionsListener itemPositionsListener = ItemPositionsListener.create();
ScrollablePositionedList.builder(
itemCount: 500,
itemBuilder: (context, index) => Text('Item $index'),
itemScrollController: itemScrollController,
itemPositionsListener: itemPositionsListener,
);
One then can scroll to a particular item with:
itemScrollController.scrollTo(
index: 150,
duration: Duration(seconds: 2),
curve: Curves.easeInOutCubic);
or jump to a particular item with:
itemScrollController.jumpTo(index: 150);
One can monitor what items are visible on screen with:
itemPositionsListener.itemPositions.addListener(() => ...);
One can listen to scrollNotifications of primary ScrollController
itemScrollController.scrollListener(
(notification) {
debugPrint(notification.position.maxScrollExtent.toString());
/// do with notification
},
);
One can scroll to max
itemScrollController.scrollToMax(
duration: Duration(seconds: 2),
curve: Curves.easeInOutCubic);
or jump to maxExtent:
itemScrollController.jumpToMax();
One can scroll to min
itemScrollController.scrollToMin(
duration: Duration(seconds: 2),
curve: Curves.easeInOutCubic);
or jump to minExtent:
itemScrollController.jumpToMin();
A full example can be found in the example folder.
This is not an officially supported Google product.