中心对齐堆栈中的两个小部件

时间:2018-06-08 17:50:46

标签: flutter

来自Android开发,相当于' android:layout_gravity =" center_vertical"'在Flutter?

我有两个盒子包裹在一个堆栈中,我想垂直居中对齐。但是,最大项目的大小不固定,因此我无法使用任何固定值。这带来了一些困难,因为我无法将一个孩子定位在另一个孩子身上。在Android中,您所要做的就是设置' layout_gravity' to' center_vertical'关于儿童用品。

这是我到目前为止所拥有的。图标的位置是固定的,这是不好的。

class CardItem extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new SizedBox(
        width: double.infinity,
        child: Stack(
          children: <Widget>[
            Padding(
              padding: EdgeInsets.fromLTRB(72.0, 6.0, 12.0, 6.0),
              child: ConstrainedBox(
                constraints: BoxConstraints(
                  minHeight: 150.0,
                ),
                child: Material(
                  elevation: 8.0,
                  borderRadius: BorderRadius.circular(12.0),
                  color: Colors.white,
                  child: InkWell(
                    onTap: () => {},
                    child: Padding(
                      padding: EdgeInsets.fromLTRB(76.0, 24.0, 6.0, 24.0),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        crossAxisAlignment: CrossAxisAlignment.stretch,
                        children: <Widget>[
                          Text('Computer',
                              style: Theme.of(context).textTheme.headline),
                          Text('电脑',
                              style: Theme.of(context).textTheme.subhead.apply(fontWeightDelta: -2)
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              )
            ),
            Align(
              alignment: Alignment.centerLeft,
              child: Padding(
                padding: EdgeInsets.fromLTRB(12.0, 0.0, 0.0, 0.0),
                child: SizedBox.fromSize(
                  size: Size.fromRadius(60.0),
                  child: Material(
                    elevation: 12.0,
                    shape: CircleBorder(),
                    child: Image.asset('image.png'),
                  ),
                ),
              ),
            ),
          ],
        )
    );
  }
}

1 个答案:

答案 0 :(得分:1)

将其包装在Align小部件中...

Align( 对齐方式:Alignment.center, 子级:已定位( 前10名, 子代:文字('hi'), ), ),