我正在尝试在我的应用程序中构建2x3 GridView,它在大屏幕设备上可以正常工作,但对于iPhone SE(4英寸)这样的设备,GridView无法自行缩放。它从底部滚动显示或溢出。
我如何确定所有其他小部件都放置在其位置上,并且其余空间由GridView使用并且没有滚动,每个项目都是可见的?您可以检查下面的代码,也可以检查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),
),
)
],
),
),
);
}
}
答案 0 :(得分:0)
尝试将主体包裹在SafeArea小部件中。
答案 1 :(得分:0)
GridView.count
具有一个名为childAspectRatio
的属性。
childAspectRatio
是每个孩子的横轴与主轴范围之比。
您可以将0
开始的属性调整为所需的应用程序要求的任何值。
我希望这会有所帮助。
注意:childAspectRatio
的值必须大于0
。
查看以下代码以获取示例:
GridView.count(
childAspectRatio: 1.0,
primary: false,
shrinkWrap: true,
padding: const EdgeInsets.all(0),
crossAxisSpacing: 10,
mainAxisSpacing: 10,
crossAxisCount: 2,
children: <Widget>[
........
]
)