Стек флаттера / Выравнивание

#flutter #alignment

Вопрос:

Выравнивание внутри стека дает мне результат, который я не понимаю.

Вот код:

     Container(
      height: totalHeight,
      child: Stack(
        children: [
          Align(
            alignment: Alignment.topCenter,
            child: Container(
              width: avatarSize,
              height: avatarSize,
              decoration: BoxDecoration(
                  shape: BoxShape.circle,
                  image: DecorationImage(
                    image: imageProvider,
                    fit: BoxFit.cover,
                  )
              ),
            ),
          ),
          Align(
              alignment: Alignment.bottomCenter,
              child: Container(
                width: 35,
                height: 20,
                color: Colors.yellow,
              ),
            )
        ],
      ),
    );
 

Желтый контейнер всегда появляется в левом нижнем углу, что бы я ни делал.
Я хочу, чтобы он был в нижнем центре.

Размер аватара, конечно, больше 35. Я поместил внешний контейнер, чтобы позволить стеку расшириться до этого внешнего родителя. Кажется, все естественно, но не работает. Странный.

Чего мне здесь не хватает?

Комментарии:

1. Для меня это прекрасно работает.

2. Проблема не в этом коде, он может быть в родительском виджете, поделитесь полным кодом с нами, чтобы мы могли вам помочь

3. @faroukosama это действительно родительский виджет, когда я устанавливаю ширину контейнера в размер аватара, он также работает. Тем не менее я озадачен, почему родительский виджет должен влиять на выравнивание в стеке с четко определенным центром. Должна быть какая-то причина, но я ее не понимаю.

Ответ №1:

Лучший виджет для выравнивания чего-либо внутри стека-это виджет позиционирования. Я думаю, что это может решить вашу проблему

Позиционированный Виджет

Комментарии:

1. На самом деле я знаю этот виджет, но преимущество выравнивания в том, что оно позволяет идеально центрировать два виджета, при этом вам нужно знать размер, который вы иногда просто не знаете. По этой причине выравнивание-это правильный путь.