I am trying to build a 2x3 GridView in my app, it works quite fine on big screen devices but for devices like iPhone SE (4 inch) GridView is not scaling it self. It appears with scroll or overflows from the bottom.
How can I make sure, all the other widgets are placed to their positions and rest of the space is used by GridView and without scroll, every item is visible? You can check the code below or also can check this codepen
import 'package:flutter/material.dart';
class StatsScreen extends StatefulWidget {
static const String id = 'stats_screen';
StatsScreen({Key key}) : super(key: key);
@override
_StatsScreenState createState() => _StatsScreenState();
}
class _StatsScreenState extends State<StatsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding:
EdgeInsets.only(top: 60.0, left: 20.0, right: 20.0, bottom: 0.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Text(
'MyText',
style: TextStyle(fontSize: 30.0, fontWeight: FontWeight.w700),
),
SizedBox(
height: 20,
),
Expanded(
child: GridView.count(
primary: false,
shrinkWrap: true,
padding: const EdgeInsets.all(0),
crossAxisSpacing: 10,
mainAxisSpacing: 10,
crossAxisCount: 2,
children: <Widget>[
Container(
padding: const EdgeInsets.all(8),
child: const Text('He\'d have you all unravel at the'),
color: Colors.teal[100],
),
Container(
padding: const EdgeInsets.all(8),
child: const Text('Heed not the rabble'),
color: Colors.teal[200],
),
Container(
padding: const EdgeInsets.all(8),
child: const Text('Sound of screams but the'),
color: Colors.teal[300],
),
Container(
padding: const EdgeInsets.all(8),
child: const Text('Who scream'),
color: Colors.teal[400],
),
Container(
padding: const EdgeInsets.all(8),
child: const Text('Revolution is coming...'),
color: Colors.teal[500],
),
Container(
padding: const EdgeInsets.all(8),
child: const Text('Revolution, they...'),
color: Colors.teal[600],
),
],
),
),
SizedBox(
height: 30.0,
),
RaisedButton(
onPressed: () {},
child: Text(
'MyRaisedButton',
style: TextStyle(
fontSize: 30.0,
color: Colors.white,
),
),
color: Colors.red[900],
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
)
],
),
),
);
}
}