Вы можете использовать пакет для этого, проверьте этот удивительный пакет: https://pub.dartlang.org/packages/flutter_staggered_grid_view
И вот как вы можете использовать:
Widget build(BuildContext context) {
return livevideolist != null
? new StaggeredGridView.countBuilder(
crossAxisCount: 2,
itemCount: livevideolist == null ? 0 : livevideolist.length,
staggeredTileBuilder: (int index) => new StaggeredTile.fit(1),
itemBuilder: (BuildContext context, int index) {
return new GestureDetector(
onTap: () {},
child: new Card(
elevation: 4.0,
margin: EdgeInsets.only(left: 10.0, right: 10.0, top: 5.0),
child: new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Container(
height: 150.0,
width: double.infinity,
decoration: new BoxDecoration(
image: new DecorationImage(
image: new NetworkImage(
"https://upload.wikimedia.org/wikipedia/en/thumb/d/d9/ImageFight_arcadeflyer.png/256px-ImageFight_arcadeflyer.png"),
fit: BoxFit.cover,
),
),
),
new Padding(
child: new Text(
"Use a very long text here to see how it expands"),
padding: EdgeInsets.only(left: 10.0, top: 10.0),
),
],
),
),
);
},
)
: new Center(child: new CircularProgressIndicator());
}
Просто замените атрибутами, которые выиспользуя.
Добавьте maxLines к вашему тексту на основе того, что вы хотите:
Text("Your long text....",
maxLines: 2 )
Используйте fit: BoxFit.cover, а не fit: BoxFit.fill, для вашего изображения
Похоже, ваш текст имеет разные размеры, вы можете принудительно установить высоту родительского контейнера:
new Container(
height: 80.0, //you can change this value
child: new Text(
"Use a very long text here to see how it expands"),
padding: EdgeInsets.only(left: 10.0, top: 10.0),
),