Flutter 颤振/省道-垂直居中网格视图

Flutter 颤振/省道-垂直居中网格视图,flutter,dart,Flutter,Dart,我试图在我的脚手架中心放置一个网格视图,但我正在努力实现这一点。我尝试过用对齐参数包装在一个容器中,以及在一个列和中心小部件中。我只能在中心水平对齐gridview。有人能帮忙吗?这是我的密码: Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("My gridview"), ), body:

我试图在我的脚手架中心放置一个网格视图,但我正在努力实现这一点。我尝试过用对齐参数包装在一个容器中,以及在一个列和中心小部件中。我只能在中心水平对齐gridview。有人能帮忙吗?这是我的密码:

      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),
),
),
);
},
),
),
),
),
],
)
],
),
);