Выровнять по центру два виджета в стеке - PullRequest
0 голосов
/ 08 июня 2018

Исходя из разработки для Android, что эквивалентно 'android: layout_gravity = "center_vertical"' в Flutter?

У меня есть две коробки в стеке, которые я бы хотел выровнять по центру по вертикали.Однако размер самого большого элемента не фиксирован, поэтому я не могу использовать какие-либо фиксированные значения.Это представляет некоторую трудность, так как у меня нет возможности позиционировать одного ребенка по отношению к другому.В Android все, что вам нужно сделать, это установить 'layout_gravity' в значение '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'),
                  ),
                ),
              ),
            ),
          ],
        )
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...