A scrollable, 2D array of widgets.

The most commonly used grid layouts are GridView.count, which creates a layout with a fixed number of tiles in the cross axis, and GridView.extent, which creates a layout with tiles that have a maximum cross-axis extent. A custom SliverGridDelegate can produce an aribtrary 2D arrangement of children, including arrangements that are unaligned or overlapping.

To create a grid with a large (or infinite) number of children, use the GridView.builder constructor with either a SliverGridDelegateWithFixedCrossAxisCount or a SliverGridDelegateWithMaxCrossAxisExtent for the gridDelegate.

To use a custom SliverChildDelegate, use GridView.custom.

To create a linear array of children, use a ListView.

See also:

Inheritance

Constructors

GridView({Key key, Axis scrollDirection: Axis.vertical, bool reverse: false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap: false, EdgeInsets padding, @required SliverGridDelegate gridDelegate, List<Widget> children: const [] })
Creates a scrollable, 2D array of widgets with a custom SliverGridDelegate. [...]
GridView.builder({Key key, Axis scrollDirection: Axis.vertical, bool reverse: false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap: false, EdgeInsets padding, @required SliverGridDelegate gridDelegate, @required IndexedWidgetBuilder itemBuilder, int itemCount })
Creates a scrollable, 2D array of widgets that are created on demand. [...]
GridView.count({Key key, Axis scrollDirection: Axis.vertical, bool reverse: false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap: false, EdgeInsets padding, @required int crossAxisCount, double mainAxisSpacing: 0.0, double crossAxisSpacing: 0.0, double childAspectRatio: 1.0, List<Widget> children: const [] })
Creates a scrollable, 2D array of widgets with a fixed number of tiles in the cross axis. [...]
GridView.custom({Key key, Axis scrollDirection: Axis.vertical, bool reverse: false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap: false, EdgeInsets padding, @required SliverGridDelegate gridDelegate, @required SliverChildDelegate childrenDelegate })
Creates a scrollable, 2D array of widgets with both a custom SliverGridDelegate and a custom SliverChildDelegate. [...]
GridView.extent({Key key, Axis scrollDirection: Axis.vertical, bool reverse: false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap: false, EdgeInsets padding, @required double maxCrossAxisExtent, double mainAxisSpacing: 0.0, double crossAxisSpacing: 0.0, double childAspectRatio: 1.0, List<Widget> children: const [] })
Creates a scrollable, 2D array of widgets with tiles that have a maximum cross-axis extent. [...]

Properties

childrenDelegate SliverChildDelegate
A delegate that provides the children for the GridView. [...]
final
gridDelegate SliverGridDelegate
A delegate that controls the layout of the children within the GridView. [...]
final
controller ScrollController
An object that can be used to control the position to which this scroll view is scrolled. [...]
final, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
padding EdgeInsets
The amount of space by which to inset the children.
final, inherited
physics ScrollPhysics
How the scroll view should respond to user input. [...]
final, inherited
primary bool
Whether this is the primary scroll view associated with the parent PrimaryScrollController. [...]
final, inherited
reverse bool
Whether the scroll view scrolls in the reading direction. [...]
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
scrollDirection Axis
The axis along which the scroll view scrolls. [...]
final, inherited
shrinkWrap bool
Whether the extent of the scroll view in the scrollDirection should be determined by the contents being viewed. [...]
final, inherited

Methods

buildChildLayout(BuildContext context) Widget
Subclasses should override this method to build the layout model.
build(BuildContext context) Widget
Describes the part of the user interface represented by this widget. [...]
inherited
buildSlivers(BuildContext context) List<Widget>
Subclasses should override this method to build the slivers for the inside of the viewport.
inherited
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree. [...]
inherited
debugFillDescription(List<String> description) → void
inherited
getDirection(BuildContext context) AxisDirection
Returns the AxisDirection in which the scroll view scrolls. [...]
@protected, inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
toString() String
Returns a string representation of this object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(other) bool
The equality operator. [...]
inherited