Using GridView.count to create a grid that's two tiles wide in portrait mode and three tiles wide in landscape mode
Flexible( child: GridView.count( crossAxisCount: (orientation == Orientaation.portrait) ? 2 : 3, mainAxisSpacing: 4.0, crossAxisSpacing: 4.0, padding: const EdgeInsets.all(4.0), childAspectRatio: (orientation == Orientaation.portrait) ? 1.0 : 1.3, children: someList.map( (catData) => aListItemWidget(catData) ).toList() ) );