Вы не можете GridView
обернуть содержимое , потому что все элементы масштабируются до высоты самого большого элемента. Вы можете изменить childAspectRatio
(на более мелких предметах будет пустое пространство) или указать пользователя StaggeredGridview
Отсюда
Разнесенное представление сетки с флаттером, которое поддерживает несколько столбцов со строками различных размеров.
Это действительно просто использовать
StaggeredGridView.countBuilder(
crossAxisCount: 4,
itemCount: 8,
itemBuilder: (BuildContext context, int index) => new Container(
color: Colors.green,
child: new Center(
child: new CircleAvatar(
backgroundColor: Colors.white,
child: new Text('$index'),
),
)),
staggeredTileBuilder: (int index) =>
new StaggeredTile.count(2, index.isEven ? 2 : 1),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
)
Вы можете найти больше примеров в Пример проекта .