Flutter 颤振/省道-垂直居中网格视图
我试图在我的脚手架中心放置一个网格视图,但我正在努力实现这一点。我尝试过用对齐参数包装在一个容器中,以及在一个列和中心小部件中。我只能在中心水平对齐gridview。有人能帮忙吗?这是我的密码:Flutter 颤振/省道-垂直居中网格视图,flutter,dart,Flutter,Dart,我试图在我的脚手架中心放置一个网格视图,但我正在努力实现这一点。我尝试过用对齐参数包装在一个容器中,以及在一个列和中心小部件中。我只能在中心水平对齐gridview。有人能帮忙吗?这是我的密码: Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("My gridview"), ), body:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("My gridview"),
),
body: Center(
child: Padding(
padding: const EdgeInsets.only(left: 50, right: 50),
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: MediaQuery.of(context).size.height * 0.4,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expanded(
child: Container(
height: double.infinity,
child: Center(
child: Text("Row Item 1"),
),
),
),
Expanded(
child: Container(
height: double.infinity,
child: Center(
child: Text("RowItem2"),
),
),
),
],
),
),
),
//CENTRE THE BELOW WIDGET IN MIDDLE OF SCREEN
Expanded(
child: Container(
child: GridView.builder(
shrinkWrap: true,
itemCount: 10,
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
//The maximum horizontal width of a single child Widget
maxCrossAxisExtent: 50,
// horizontal spacing between individual child widgets
mainAxisSpacing: 10.0,
//Vertical vertical spacing between individual child widgets
crossAxisSpacing: 10.0,
),
itemBuilder: (context, index) {
return Card(
child: Center(
child: Text(
index.toString(),
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
),
),);
},
),
),
)
],
),
),
),
);
}
试试下面的方法,也许你的小部件从它的父母那里得到了约束
SizedBox(
width:MediaQuery.of(context).size.width,
child:Wrap(
alignment: WrapAlignment.start
children:[
//CENTRE THE BELOW WIDGET IN MIDDLE OF SCREEN
Expanded(
child: Container(
child: GridView.builder(
shrinkWrap: true,
itemCount: 10,
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
//The maximum horizontal width of a single child Widget
maxCrossAxisExtent: 50,
// horizontal spacing between individual child widgets
mainAxisSpacing: 10.0,
//Vertical vertical spacing between individual child widgets
crossAxisSpacing: 10.0,
),
itemBuilder: (context, index) {
return Card(
child: Center(
child: Text(
index.toString(),
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
),
),);
},
),
),
)
],
),
),
请尝试使用堆栈,因为没有您预期结果的图形表示,我根据您的问题陈述进行了尝试,代码如下(颜色已更改以供参考)
返回脚手架(
appBar:appBar(
标题:文本(“我的网格视图”),
),
主体:堆栈(
儿童:[
纵队(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
划船(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
扩大(
子:容器(
儿童:中心(
子项:文本(“行项目1”),
),
),
),
扩大(
子:容器(
儿童:中心(
子项:文本(“行项2”),
),
),
),
],
),
大小盒子(
身高:30,
),
容器(
高度:MediaQuery.of(context).size.height*0.2,
填充:EdgeInsets.symmetric(
水平:MediaQuery.of(上下文).size.width*0.05),
儿童:扩大(
子:容器(
颜色:颜色。琥珀色,
子项:GridView.builder(
收缩膜:对,
物品计数:100,
gridDelegate:SliverGridDelegateWithMaxCrossAxisExtent(
//单个子窗口小部件的最大水平宽度
maxCrossAxisExtent:50,
//单个子窗口小部件之间的水平间距
主轴间距:10.0,
//单个子窗口小部件之间的垂直间距
交叉轴间距:10.0,
),
itemBuilder:(上下文,索引){
回程卡(
儿童:中心(
子:文本(
index.toString(),
样式:TextStyle(
颜色:颜色,红色,
fontWeight:fontWeight.bold),
),
),
);
},
),
),
),
),
],
)
],
),
);