如何在 Flutter 中将列和行项居中?

Posted

技术标签:

【中文标题】如何在 Flutter 中将列和行项居中?【英文标题】:How to center column and row item in Flutter? 【发布时间】:2018-11-25 00:44:36 【问题描述】:

我有一张小货币表。我没有使用网格。我使用了列和行。问题是行中的项目没有显示在中心,如下面的 Excel 示例所示。 我必须使用什么小部件来使项目居中?

示例代码:

return new Center(
  child: new Column(
    crossAxisAlignment: CrossAxisAlignment.center,
    children: <Widget>[
      new Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          new Padding(
            padding: const EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0),
            child: new Icon(
              Icons.crop_rotate,
              color: Colors.white,
            ),
          ),
          new Padding(
            padding: const EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0),
            child: new Text("STG", style: mainHeadTextStyle),
          ),
          new Padding(
            padding: const EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0),
            child: new Text("EUR", style: mainHeadTextStyle),
          ),
          new Padding(
            padding: const EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 5.0),
            child: new Text("USD", style: mainHeadTextStyle),
          ),
        ],
      ),
      new Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
....
....
....

【问题讨论】:

【参考方案1】:

这样使用

在列中

child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [...
                       .
                       ] 

在行中

 child: Row(
    mainAxisAlignment: MainAxisAlignment.center,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: [...
                       .
                       ] 

【讨论】:

【参考方案2】:

如果您希望整个表为 Centered,请使用 ColumnmainAxisAlignment 属性。

mainAxisAlignment: MainAxisAlignment.center //Center Column contents vertically,
crossAxisAlignment: CrossAxisAlignment.center //Center Column contents horizontally,

mainAxisAlignment: MainAxisAlignment.center //Center Row contents horizontally,
crossAxisAlignment: CrossAxisAlignment.center //Center Row contents vertically,

【讨论】:

【参考方案3】:

如果您想要精细控制,可以使用Spacer

Column(
  children: <Widget>[
    Spacer(), // 1st spacer
    Widget1(),
    Widget2(),
    Spacer(), // 2nd spacer
  ],
)

您也可以使用Spacer(flex:2) 更改flex

【讨论】:

【参考方案4】:

如果你希望它像图片中一样,请使用

mainAxisAlignment: MainAxisAlignment.spaceEvenly

【讨论】:

以上是关于如何在 Flutter 中将列和行项居中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中将 gridView 项目居中?

如何在 PostgreSQL 中转置列和行(即如何切换行和列)? [复制]

如何在 PIG 中转置列和行

c#中如何获取MYSQL数据库名称、表、列和行

如何设置JTable列和行颜色?

如何识别两个数据矩阵之间的哪些列和行匹配?