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> items)?, 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> items)?, double? spacing})
const
CollectionView.pullable({Key? key, required CollectionItemBuilder<T> builder, required dynamic data(int iteration), 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> items)?, 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, 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> items)?, 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, 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> items)?, 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> items)?, 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
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> items)?
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.
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

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.
stateReset(String stateName) → void
Resets the state.