CollectionView<T> class

The CollectionView widget is a wrapper for the ListView widget. It provides a simple way to display a list of items with full type safety.

Example:

CollectionView<String>(
  data: () => ['Item 1', 'Item 2', 'Item 3'],
  builder: (context, item) {
    return Container(
      color: item.isEven ? Colors.grey : Colors.white,
      child: Text('${item.data} at ${item.index}'),
    );
  },
)

With async data:

CollectionView<User>(
  data: () async => await api.fetchUsers(),
  builder: (context, item) => UserTile(user: item.data),
  empty: Text('No users found'),
)

With pull-to-refresh and pagination:

CollectionView<User>.pullable(
  data: (iteration) async => api.getUsers(page: iteration),
  builder: (context, item) => UserTile(user: item.data),
  onRefresh: () => print('Refreshed!'),
)
Inheritance
Available extensions

Constructors

CollectionView({Key? key, required CollectionItemBuilder<T> builder, required dynamic data(), dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
const
CollectionView.grid({Key? key, required dynamic data(), required CollectionItemBuilder<T> builder, int? crossAxisCount = 2, double? mainAxisSpacing = 1.0, double? crossAxisSpacing = 1.0, dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
const
CollectionView.pullable({Key? key, required CollectionItemBuilder<T> builder, required dynamic data(int iteration), bool enablePullDown = true, dynamic onRefresh()?, dynamic beforeRefresh()?, dynamic afterRefresh(dynamic data)?, String? headerStyle, Widget? footerLoadingIcon, dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
Creates a pullable list view with pull-to-refresh and pagination support.
const
CollectionView.pullableGrid({Key? key, required CollectionItemBuilder<T> builder, required dynamic data(int iteration), int? crossAxisCount = 2, double? mainAxisSpacing = 0, double? crossAxisSpacing = 0, bool enablePullDown = true, dynamic onRefresh()?, dynamic beforeRefresh()?, dynamic afterRefresh(dynamic data)?, String? headerStyle, Widget? footerLoadingIcon, dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
Creates a pullable grid view with pull-to-refresh and pagination support.
const
CollectionView.pullableSeparated({Key? key, required CollectionItemBuilder<T> builder, required dynamic data(int iteration), required IndexedWidgetBuilder? separatorBuilder, bool enablePullDown = true, dynamic onRefresh()?, dynamic beforeRefresh()?, dynamic afterRefresh(dynamic data)?, String? headerStyle, Widget? footerLoadingIcon, dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
Creates a pullable separated list view with pull-to-refresh and pagination support.
const
CollectionView.separated({Key? key, required dynamic data(), required CollectionItemBuilder<T> builder, required IndexedWidgetBuilder? separatorBuilder, dynamic transform(List<T> data)?, Widget? empty, LoadingStyle? loadingStyle, String? stateName, Axis? scrollDirection, bool? reverse, ScrollController? controller, bool? primary, ScrollPhysics? physics, bool? shrinkWrap, EdgeInsets? padding, double? itemExtent, Widget? prototypeItem, ChildIndexGetter? findChildIndexCallback, bool addAutomaticKeepAlives = true, bool addRepaintBoundaries = true, bool addSemanticIndexes = true, double? cacheExtent, int? semanticChildCount, DragStartBehavior? dragStartBehavior, ScrollViewKeyboardDismissBehavior? keyboardDismissBehavior, String? restorationId, Clip? clipBehavior, Widget? header, dynamic sort(List<T> data)?, double? spacing})
const

Properties

addAutomaticKeepAlives → bool
final
addRepaintBoundaries → bool
final
addSemanticIndexes → bool
final
afterRefresh → dynamic Function(dynamic data)?
final
beforeRefresh → dynamic Function()?
final
builder → CollectionItemBuilder<T>
final
cacheExtent → double?
final
clipBehavior → Clip?
final
controller → ScrollController?
final
crossAxisCount → int?
final
crossAxisSpacing → double?
final
data → dynamic Function()?
final
dragStartBehavior → DragStartBehavior?
final
empty → Widget?
final
enablePullDown → bool
final
findChildIndexCallback → ChildIndexGetter?
final
footerLoadingIcon → Widget?
final
hashCode → int
The hash code for this object.
no setterinherited
final
headerStyle → String?
final
isPullable → bool
final
itemExtent → double?
final
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
keyboardDismissBehavior → ScrollViewKeyboardDismissBehavior?
final
kind → CollectionViewKind
final
loadingStyle → LoadingStyle?
final
mainAxisSpacing → double?
final
onRefresh → dynamic Function()?
final
padding → EdgeInsets?
final
paginatedData → dynamic Function(int iteration)?
final
physics → ScrollPhysics?
final
primary → bool?
final
prototypeItem → Widget?
final
restorationId → String?
final
reverse → bool?
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
scrollDirection → Axis?
final
semanticChildCount → int?
final
separatorBuilder → IndexedWidgetBuilder?
final
shrinkWrap → bool?
final
sort → dynamic Function(List<T> data)?
final
spacing → double?
final
stateName → String?
final
transform → dynamic Function(List<T> data)?
final

Methods

connectiveOr({required Widget offline}) → Widget

Available on Widget, provided by the ConnectiveExtension extension

Wraps the widget in a Connective that shows an offline placeholder.
createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<CollectionView<T>>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
faderBottom({double strength = 0.2, Color color = Colors.black}) → FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the bottom of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderFrom({double strength = 0.2, Color color = Colors.black, AlignmentGeometry begin = Alignment.topCenter, AlignmentGeometry end = Alignment.bottomCenter}) → FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader with custom alignment. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderLeft({double strength = 0.2, Color color = Colors.black}) → FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the left of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderRight({double strength = 0.2, Color color = Colors.black}) → FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the right of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
faderTop({double strength = 0.2, Color color = Colors.black}) → FadeOverlay

Available on StatefulWidget, provided by the NyStatefulExt extension

Make gradient fader from the top of the widget. strength ranges from 0.0 (subtle) to 1.0 (strong).
flexible({Key? key, int flex = 1, FlexFit fit = FlexFit.loose}) → Flexible

Available on StatefulWidget, provided by the NyStatefulExt extension

Make a StatefulWidget Flexible.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onlyOffline() → Widget

Available on Widget, provided by the ConnectiveExtension extension

Only shows the widget when offline, otherwise shows nothing.
onlyOnline() → Widget

Available on Widget, provided by the ConnectiveExtension extension

Only shows the widget when online, otherwise shows nothing.
paddingOnly({double left = 0.0, double top = 0.0, double right = 0.0, double bottom = 0.0}) → Padding

Available on StatefulWidget, provided by the NyStatefulExt extension

Add padding to the widget.
paddingSymmetric({double horizontal = 0.0, double vertical = 0.0}) → Padding

Available on StatefulWidget, provided by the NyStatefulExt extension

Add symmetric padding to the widget.
pullable({required Future<void> onRefresh()?, PullableConfig? pullableConfig}) → Widget

Available on Widget, provided by the NyWidgetExt extension

Make a widget pullable using the Pullable widget.
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toSkeleton({Key? key, bool? ignoreContainers, bool? justifyMultiLineText, Color? containersColor, bool ignorePointers = true, bool enabled = true, PaintingEffect? effect, TextBoneBorderRadius? textBoneBorderRadius}) → Skeletonizer

Available on Widget, provided by the NyWidgetExt extension

Make a widget a skeleton using the Skeletonizer package.
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited
visibleWhen(bool condition) → Widget

Available on StatefulWidget, provided by the NyStatefulExt extension

Make a widget visible when a condition is true.

Operators

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

Static Methods

removeFromIndex(String stateName, int index) → void
Removes an item from the list at the given index.
stateActions(String stateName) → CollectionViewStateActions
Returns a CollectionViewStateActions instance for the given stateName.
stateReset(String stateName) → void
Resets the state.