Android studio 我们如何将布局放置在中心的颤振中

Android studio 我们如何将布局放置在中心的颤振中,android-studio,flutter,layout,Android Studio,Flutter,Layout,我想把卡片放在中间 这是密码 class _HomeState extends State<Home>{ @override Widget build(BuildContext context) { var myActivity=["Join Meeting","Create Meeting", "Schedule Meeting","Yet to be decided"]; va

我想把卡片放在中间 这是密码

class _HomeState extends State<Home>{
  @override
  Widget build(BuildContext context) {
    var myActivity=["Join Meeting","Create Meeting", "Schedule Meeting","Yet to be decided"];
    var myGridView = new GridView.builder(
      itemCount: myActivity.length,
      gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      itemBuilder: (BuildContext context,int index) {
        return new GestureDetector(
          child: Card(
            elevation: 5.0,
            child: Container(
              alignment: Alignment.center,
              margin: EdgeInsets.only(top: 10.0, bottom: 10.0, left: 10.0),
              child: Text(myActivity[index]),
            ),
          ),
          onTap: () {
            showDialog(
                barrierDismissible: false,
                context: context,
                child: CupertinoAlertDialog(
                  content: Text(myActivity[index],),
                  actions: <Widget>[
                    FlatButton(
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                        child: Text("Ok"))
                  ],
                )
            );
          },
        );
      },
    );

    return Scaffold(
      body: myGridView,
    );
  }
}
class\u HomeState扩展状态{
@凌驾
小部件构建(构建上下文){
var myActivity=[“加入会议”、“创建会议”、“安排会议”、“待定”];
var myGridView=new GridView.builder(
itemCount:myActivity.length,
gridDelegate:新SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
itemBuilder:(构建上下文,int索引){
返回新的手势检测器(
孩子:卡片(
标高:5.0,
子:容器(
对齐:对齐.center,
边距:仅限边集(顶部:10.0,底部:10.0,左侧:10.0),
子项:文本(myActivity[索引]),
),
),
onTap:(){
显示对话框(
禁止:错误,
上下文:上下文,
孩子:CupertinoAlertDialog(
内容:文本(myActivity[索引],),
行动:[
扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
子项:文本(“确定”))
],
)
);
},
);
},
);
返回脚手架(
正文:myGridView,
);
}
}

要在屏幕中央显示GridView,只需将
myGridView
包装在
center
小部件中,如下所示

return Scaffold(
      body: Center(child: myGridView),
    );

您还需要将GridView的
包覆面提取
参数设置为true。否则,gridView将占据整个屏幕,因此从视觉上看,
Center
小部件将不会影响其位置。

首先在
Center
小部件内包装网格小部件需要做两件事&将
gridView
属性设置为
shrinkWrap:true,

@override
  Widget build(BuildContext context) {
    print("In Test Widget");
    // TODO: implement build
    var myActivity=["Join Meeting","Create Meeting", "Schedule Meeting","Yet to be decided"];
    var myGridView = new GridView.builder(
      itemCount: myActivity.length,
      shrinkWrap: true,
      gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      itemBuilder: (BuildContext context,int index) {
        return new GestureDetector(
          child: Card(
            elevation: 5.0,
            child: Container(
              alignment: Alignment.center,
              margin: EdgeInsets.only(top: 10.0, bottom: 10.0, left: 10.0),
              child: Text(myActivity[index]),
            ),
          ),
          onTap: () {
            showDialog(
                barrierDismissible: false,
                context: context,
                child: CupertinoAlertDialog(
                  content: Text(myActivity[index],),
                  actions: <Widget>[
                    FlatButton(
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                        child: Text("Ok"))
                  ],
                )
            );
          },
        );
      },
    );

    return Scaffold(
      body: Center(child: myGridView),
    );
  }
@覆盖
小部件构建(构建上下文){
打印(“在测试小部件中”);
//TODO:实现构建
var myActivity=[“加入会议”、“创建会议”、“安排会议”、“待定”];
var myGridView=new GridView.builder(
itemCount:myActivity.length,
收缩膜:对,
gridDelegate:新SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:2),
itemBuilder:(构建上下文,int索引){
返回新的手势检测器(
孩子:卡片(
标高:5.0,
子:容器(
对齐:对齐.center,
边距:仅限边集(顶部:10.0,底部:10.0,左侧:10.0),
子项:文本(myActivity[索引]),
),
),
onTap:(){
显示对话框(
禁止:错误,
上下文:上下文,
孩子:CupertinoAlertDialog(
内容:文本(myActivity[索引],),
行动:[
扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
子项:文本(“确定”))
],
)
);
},
);
},
);
返回脚手架(
主体:中心(子对象:myGridView),
);
}
您可以使用行组件包装视图(卡),并将mainAxisAlignment属性设置为mainAxisAlignment.center如下所示


子项:行(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
卡片(
标高:5.0,
子:容器(
对齐:对齐.center,
边距:仅限边集(顶部:10.0,底部:10.0,左侧:10.0),
子项:文本(myActivity[索引]),
),
)
],
),

将布局包装在一列中(),并将MainAxisAlignment设置为中心

纵队( mainAxisAlignment:mainAxisAlignment.center, 孩子:)


它也可以通过crossAxisAlignment水平居中。

@vaibhavjain:你能接受这个答案吗,这样其他人会发现它很有用。
 child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Card(
            elevation: 5.0,
            child: Container(
              alignment: Alignment.center,
              margin: EdgeInsets.only(top: 10.0, bottom: 10.0, left: 10.0),
              child: Text(myActivity[index]),
            ),
          )
        ],
      ),