Skip to content

polarby/snappy_list_view

Repository files navigation

pub package

Beta version

SnappyListView provides you with everything to make your list snap to each element - essentially like a PageView widget, but while displaying every element in a list format. This means that this widget also enables you to have different sizes of items. Main features include:

  • Different and variable sizes of items in both scroll- and orthogonal direction size
  • Configurable overscroll snapping physics (overscroll multiple pages when high velocity)
  • List visualisation (customize or choose out of a range functions, such as wheel, carousel, or perspective)
  • Full control where your items should snap in the viewport and on each item
  • Simply use a PageController to get feedback and control your list

Important Note: This widget behaves just like a PageView widget. Meaning that any usage in a Column, Stack or else where equals the usage of a PageView.

Features

This is a beta version of this plugin, no visual features are yet available

Usage

SnappyListView
(
itemCount: Colors.accents.length,itemBuilder: (
context, index) {
return Container(
height: 100,
color: Colors.accents.elementAt(index),
child: Text("Index: $index"),
),
);

Tip: full interactive example in ./example folder.

Main Parameters

  • required int itemCount - your item count, if it changes simply call setState() on the widget
  • required Widget Function(BuildContext, int) itemBuilder - builder for your items (building only the ones that are needed)
  • PageController controller- use the known PageController with functions such as jumpTo(index), animateTo(index), .currentPage, etc.
  • ScrollPhysics? physics - add your custom snap physics such you own (mass, stiffness, damping)
  • bool itemSnapping - control whether your list should snap
  • bool reverse - reverse the list (just like in ListView)
  • ItemPositionsListener itemPositionsListener - listen to the exact item position in the viewport
  • void Function(int index, double size)? onPageChanged - get feedback on the current changing index and size
  • void Function(double index, double size)? onPageChange - get feedback on the current index and size change
  • PageOverscrollPhysics? overscrollPhysics - configure how "fast" a overscroll should happen
  • ListVisualisation visualisation - display items like carousel, perspective, wheel, etc. (and custom)
  • SnapAlignment snapAlignment- where the snap point is supposed to be on in the viewport. Dynamic behavior is also possible.
  • SnapAlignment snapOnItemAlignment - where the snap point is supposed to be on each item. Dynamic behavior is also possible.

And many more such as (scrollBehavior,minCacheExtent,onPageChanged, etc. )

Additional information

Contributions are very welcome and are merged after testing within hours.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published