I am new to flutter. Just have to center my Grid view:
Below is the Code I tried:
@override
Widget build(BuildContext context) {
return new Material(
color: Colors.deepPurpleAccent,
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children:<Widget>[new GridView.count(crossAxisCount: _column,children: new List.generate(_row*_column, (index) {
return new Center(
child: new CellWidget()
);
}),)]
)
);
}
Exception as follows:
I/flutter ( 9925): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 9925): The following assertion was thrown during performResize():
I/flutter ( 9925): Vertical viewport was given unbounded height.
I/flutter ( 9925): Viewports expand in the scrolling direction to fill their container.In this case, a vertical
I/flutter ( 9925): viewport was given an unlimited amount of vertical space in which to expand. This situation
I/flutter ( 9925): typically happens when a scrollable widget is nested inside another scrollable widget.
I/flutter ( 9925): If this widget is always nested in a scrollable widget there is no need to use a viewport because
I/flutter ( 9925): there will always be enough vertical space for the children. In this case, consider using a Column
I/flutter ( 9925): instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
I/flutter ( 9925): the height of the viewport to the sum of the heights of its children.
I/flutter ( 9925):
I/flutter ( 9925): When the exception was thrown, this was the stack:
I/flutter ( 9925): #0 RenderViewport.performResize.<anonymous closure> (package:flutter/src/rendering/viewport.dart:827:15)
I/flutter ( 9925): #1 RenderViewport.performResize (package:flutter/src/rendering/viewport.dart:880:6)
I/flutter ( 9925): #2 RenderObject.layout (package:flutter/src/rendering/object.dart:1555:9)
Thanks in advance!
Don't use
Column
for single child alignment. UseAlign
instead.This generally happens when you try to use a
ListView
/GridView
inside aColumn
, there are many ways of solving it, I am listing few here.Wrap
ListView
inExpanded
Wrap
ListView
inSizedBox
and give a boundedheight
Use
shrinkWrap: true
inListView
.So, everyone posted answers but no one cared to explain why: I'll copy the documentation about
shrinkWrap
:So, taking the vocabulary of the docs, what's happening here is that our
ListView
is in a situation of unbounded constraints (in the direction that we are scrolling), thus theListView
will complain that:By simply setting
shrinkWrap
totrue
will make sure that it wraps its size defined by the contents. A sample code to illustrate:That's what is going with your code, nonetheless, @Rémi suggestion is the best for this case, using
Align
instead of aColumn
.Adding this two lines
This situation typically happens when a scrollable widget is nested inside another scrollable widget.
In my case i use GridView inside of Column and that error throws.
GridView widget has
shrinkWrap
property/named parameter, to set ittrue
my problem is fixed.There is a widget called Center. It should help you achive what you want to do (center it vertically). Official Documentation for Center widget