Reputation: 3460
I'm working on flutter web and I want my gridview scroll direction horizontal but when I added scrolldirection: Axix.horizontal
it rotated the gridview. I know to make this easy I can use ListView
but it takes too much code to make it responsive on the web. I just want the gridView itself to manage its crossAxisCount
by screen width to become responsive. So I need help on how to make GridView scroll direction horizontal. Thanks
int gridCrossAxisCount;
if (size > 1600) {
gridCrossAxisCount = 4;
} else if (size > 1300) {
gridCrossAxisCount = 3;
} else if (size > 800) {
gridCrossAxisCount = 2;
} else {
gridCrossAxisCount = 1;
}
Container(
width: double.infinity,
height: 300,
child: GridView.count(
// scrollDirection: Axis.horizontal,
physics: ScrollPhysics(),
shrinkWrap: true,
primary: true,
padding: EdgeInsets.only(top: 15.0),
crossAxisCount: gridCrossAxisCount, //Screensize grid count
childAspectRatio: 0.60, //1.0
mainAxisSpacing: 0.2, //1.0
crossAxisSpacing: 4.0, //1.0
children: [
Container(
height: 200,
width: 200,
color: Colors.green,
),
Container(
height: 200,
width: 200,
color: Colors.red,
),
Container(
height: 200,
width: 200,
color: Colors.orange,
),
Container(
height: 200,
width: 200,
color: Colors.indigo,
),
],
),
),
Upvotes: 4
Views: 7693
Reputation: 3326
Can you include the screenshot when the GridView rotate?
I think your code works fine with Axis.horizontal on. The problem might lie in the logic when calculating gridCrossAxisCount/ number of child items.
When Axis.horizontal is on, the mainAxis will now be horizontal and the crossAxis will be vertical.
Thus if the axisCount is 1, then all items will be display in 1 line only, but if it's 4, they will be display in 4 lines, which with 4 children in your example is not enough to cause overflow outside of Viewport and enable scrolling.
Upvotes: 4