SliverStaggeredGrid class
A sliver that places multiple box children in a two dimensional arrangement.
SliverStaggeredGrid places its children in arbitrary positions determined by gridDelegate. Each child is forced to have the size specified by the gridDelegate.
The main axis direction of a grid is the direction in which it scrolls; the cross axis direction is the orthogonal direction.
Sample code
This example, which would be inserted into a CustomScrollView.slivers list, shows 8 boxes:
SliverStaggeredGrid.count(
crossAxisCount: 4,
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
children: const <Widget>[
const Text('1'),
const Text('2'),
const Text('3'),
const Text('4'),
const Text('5'),
const Text('6'),
const Text('7'),
const Text('8'),
],
staggeredTiles: const <StaggeredTile>[
const StaggeredTile.count(2, 2),
const StaggeredTile.count(2, 1),
const StaggeredTile.count(2, 2),
const StaggeredTile.count(2, 1),
const StaggeredTile.count(2, 2),
const StaggeredTile.count(2, 1),
const StaggeredTile.count(2, 2),
const StaggeredTile.count(2, 1),
],
)
See also:
- SliverList, which places its children in a linear array.
- SliverFixedExtentList, which places its children in a linear array with a fixed extent in the main axis.
- SliverPrototypeExtentList, which is similar to SliverFixedExtentList except that it uses a prototype list item instead of a pixel value to define the main axis extent of each item.
- Inheritance
Constructors
- SliverStaggeredGrid({Key? key, required SliverChildDelegate delegate, required SliverStaggeredGridDelegate gridDelegate})
-
Creates a sliver that places multiple box children in a two dimensional
arrangement.
const
-
SliverStaggeredGrid.count({Key? key, required int crossAxisCount, double mainAxisSpacing = 0.0, double crossAxisSpacing = 0.0, List<
Widget> children = const <Widget>[], List<StaggeredTile> staggeredTiles = const <StaggeredTile>[]}) - Creates a sliver that places multiple box children in a two dimensional arrangement with a fixed number of tiles in the cross axis.
- SliverStaggeredGrid.countBuilder({Key? key, required int crossAxisCount, required IndexedStaggeredTileBuilder staggeredTileBuilder, required IndexedWidgetBuilder itemBuilder, required int itemCount, double mainAxisSpacing = 0, double crossAxisSpacing = 0})
- Creates a sliver that builds multiple box children in a two dimensional arrangement with a fixed number of tiles in the cross axis.
-
SliverStaggeredGrid.extent({Key? key, required double maxCrossAxisExtent, double mainAxisSpacing = 0, double crossAxisSpacing = 0, List<
Widget> children = const <Widget>[], List<StaggeredTile> staggeredTiles = const <StaggeredTile>[]}) - Creates a sliver that places multiple box children in a two dimensional arrangement with tiles that each have a maximum cross-axis extent.
- SliverStaggeredGrid.extentBuilder({Key? key, required double maxCrossAxisExtent, required IndexedStaggeredTileBuilder staggeredTileBuilder, required IndexedWidgetBuilder itemBuilder, required int itemCount, double mainAxisSpacing = 0, double crossAxisSpacing = 0})
- Creates a sliver that builds multiple box children in a two dimensional arrangement with tiles that each have a maximum cross-axis extent.
Properties
- delegate → SliverChildDelegate
-
The delegate that provides the children for this widget.
finalinherited
- gridDelegate → SliverStaggeredGridDelegate
-
The delegate that controls the size and position of the children.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
createElement(
) → SliverVariableSizeBoxAdaptorElement -
RenderObjectWidgets always inflate to a RenderObjectElement subclass.
inherited
-
createRenderObject(
BuildContext context) → RenderSliverStaggeredGrid -
Creates an instance of the RenderObject class that this
RenderObjectWidget represents, using the configuration described by this
RenderObjectWidget.
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
-
didUnmountRenderObject(
covariant RenderObject renderObject) → void -
A render object previously associated with this widget has been removed
from the tree. The given RenderObject will be of the same type as
returned by this object's createRenderObject.
inherited
-
estimateMaxScrollOffset(
SliverConstraints constraints, int firstIndex, int lastIndex, double leadingScrollOffset, double trailingScrollOffset) → double? -
Returns an estimate of the max scroll extent for all the children.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) → 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
-
updateRenderObject(
BuildContext context, covariant RenderSliverStaggeredGrid renderObject) → void -
Copies the configuration described by this RenderObjectWidget to the
given RenderObject, which will be of the same type as returned by this
object's createRenderObject.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited