Flutter 响应性GridView全屏颤振
我想让我的gridview占据整个屏幕,但我找不到一种方法来做到这一点。 我已经检查了多个博客,如: 但这对我来说似乎不起作用。 甚至当我使用MediaQuery数据获取屏幕宽度和高度以适应childAspectRation时 这里是我的网格视图:Flutter 响应性GridView全屏颤振,flutter,gridview,flutter-layout,Flutter,Gridview,Flutter Layout,我想让我的gridview占据整个屏幕,但我找不到一种方法来做到这一点。 我已经检查了多个博客,如: 但这对我来说似乎不起作用。 甚至当我使用MediaQuery数据获取屏幕宽度和高度以适应childAspectRation时 这里是我的网格视图: GridView.count( childAspectRatio: (widthScreen / heightScreen), shrinkWrap: true,
GridView.count(
childAspectRatio: (widthScreen / heightScreen),
shrinkWrap: true,
crossAxisCount: 2,
physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 15,
mainAxisSpacing: 10,
padding: const EdgeInsets.all(5),
children: <Widget>[
CardItem(
imageUrl: 'assets/images/apprendreajouer.jpg',
title: 'Apprendre à jouer',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Cours",
pageKey: 1,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/exercices.jpeg',
title: 'Exercice',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Exercices",
pageKey: 2,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/partition.jpg',
title: 'Partition',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Partition",
pageKey: 3,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/dictionnaire.jpeg',
title: 'Mon dictionnaire',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Dictionnaire d'accords",
pageKey: 4,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/examen.jpeg',
title: 'Examen',
),
CardItem(
imageUrl: 'assets/images/apropos.jpg',
title: 'A propos',
),
],
),
GridView.count(
childAspectRatio:(宽屏幕/高屏幕),
收缩膜:对,
交叉轴计数:2,
物理学:NeverscrollableScroll物理学(),
横轴间距:15,
平均间距:10,
填充:常量边集。全部(5),
儿童:[
卡迪姆(
imageUrl:'assets/images/apprendreajouer.jpg',
标题:'Apprendreájouer',
功能:(){
导航器。推(
上下文
CupertinoPageRoute(
生成器:(上下文)=>ListLevelsPage(
页面标题:“课程”,
页码键:1,
上下文:上下文,
),
),
);
},
),
卡迪姆(
imageUrl:'assets/images/exercies.jpeg',
标题:“行使权”,
功能:(){
导航器。推(
上下文
CupertinoPageRoute(
生成器:(上下文)=>ListLevelsPage(
页面标题:“练习”,
页码键:2,
上下文:上下文,
),
),
);
},
),
卡迪姆(
imageUrl:'assets/images/partition.jpg',
标题:“分区”,
功能:(){
导航器。推(
上下文
CupertinoPageRoute(
生成器:(上下文)=>ListLevelsPage(
页面标题:“分区”,
页码键:3,
上下文:上下文,
),
),
);
},
),
卡迪姆(
imageUrl:'assets/images/dictionnaire.jpeg',
标题:“Mon dictionnaire”,
功能:(){
导航器。推(
上下文
CupertinoPageRoute(
生成器:(上下文)=>ListLevelsPage(
页面标题:“协议用语”,
页码键:4,
上下文:上下文,
),
),
);
},
),
卡迪姆(
imageUrl:'assets/images/examen.jpeg',
标题:“Examen”,
),
卡迪姆(
imageUrl:'assets/images/apropos.jpg',
标题:“提案人”,
),
],
),
下面是我想要的图片:
GridView.count(
childAspectRatio: (widthScreen / heightScreen),
shrinkWrap: true,
crossAxisCount: 2,
physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 15,
mainAxisSpacing: 10,
padding: const EdgeInsets.all(5),
children: <Widget>[
CardItem(
imageUrl: 'assets/images/apprendreajouer.jpg',
title: 'Apprendre à jouer',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Cours",
pageKey: 1,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/exercices.jpeg',
title: 'Exercice',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Exercices",
pageKey: 2,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/partition.jpg',
title: 'Partition',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Partition",
pageKey: 3,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/dictionnaire.jpeg',
title: 'Mon dictionnaire',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Dictionnaire d'accords",
pageKey: 4,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/examen.jpeg',
title: 'Examen',
),
CardItem(
imageUrl: 'assets/images/apropos.jpg',
title: 'A propos',
),
],
),
更新使用@Thierry源代码获得的内容:
GridView.count(
childAspectRatio: (widthScreen / heightScreen),
shrinkWrap: true,
crossAxisCount: 2,
physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 15,
mainAxisSpacing: 10,
padding: const EdgeInsets.all(5),
children: <Widget>[
CardItem(
imageUrl: 'assets/images/apprendreajouer.jpg',
title: 'Apprendre à jouer',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Cours",
pageKey: 1,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/exercices.jpeg',
title: 'Exercice',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Exercices",
pageKey: 2,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/partition.jpg',
title: 'Partition',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Partition",
pageKey: 3,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/dictionnaire.jpeg',
title: 'Mon dictionnaire',
function: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => ListLevelsPage(
pageTitle: "Dictionnaire d'accords",
pageKey: 4,
context: context,
),
),
);
},
),
CardItem(
imageUrl: 'assets/images/examen.jpeg',
title: 'Examen',
),
CardItem(
imageUrl: 'assets/images/apropos.jpg',
title: 'A propos',
),
],
),
任何帮助都会很好。您的代码中存在一些差异 您不能定义:
- 6
GridView的
children
ofchildAspectRatio
widthScreen/heightScreen
crossAxisCount:2
子项的数量减少到4,则可以保留子项的数量
和交叉轴计数
如果要在3行上设置6个子项,请将childAspectRatio
更改为MediaQuery.of(context).size.aspectRatio*3/2
如果希望在2行上有6个子对象
,则将交叉轴计数
增加到3,并将子对象
更改为MediaQuery.of(context).size.aspectRatio*2/3
注意:您可以继续这样做。如果需要n子对象的m行
,则子对象应为m/n
完整的源代码(3行上的6个子代码)
导入“包装:颤振/材料.省道”;
void main(){
runApp(
材料聚丙烯(
debugShowCheckedModeBanner:false,
标题:“颤振演示”,
主页:主页(),
),
);
}
类主页扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“GridView演示”),
正文:布局生成器(
生成器:(上下文,约束)=>GridView.count(
childAspectRatio:constraints.Maximum.aspectRatio*3/2,
收缩膜:对,
交叉轴计数:2,
物理学:NeverscrollableScroll物理学(),
子项:List.generate(
6.
(索引)=>填充(
填充:常数边集全部(4.0),
孩子:卡迪姆(
imageUrl:'assets/images/abstract$index.jpg',
标题:“摘要$index”,
),
),
).toList(),
),
),
);
}
}
类CardItem扩展了无状态小部件{
最终字符串imageUrl;
最后的字符串标题;
最终的回调函数;
const CardItem({Key Key,this.imageUrl,this.title,this.function})
:super(key:key);
@凌驾
小部件构建(BuildContext上下文)