Это виджет, состоящий из множества виджетов контейнерного класса (DecoratedBox, ConstrainedBox, Transform, Padding, Align и т. д.), поэтому его функцию можно назвать набором функций.
Positioned
Это виджет, расположенный в макете стека, такой же, как в CSS.position:absolute;сходство
Позиционирование контейнера в позиции
Во флаттере контейнер Container по умолчанию обычно занимает все пространство. Что происходит, когда Positioned использует Container?
эффект отображенияЦвет Контейнера в Positioned желтый, но соответствующий интерфейс не отображается на интерфейсе, потому что Контейнер в это время подобен блочному элементу в HTML, который занимает всю строку, но не имеет высоты.Нажимайте кнопки Получить Sizes и Get Position для вывода позиции контейнера и размера
I/flutter (27566): SIZE of Red: Size(360.0, 0.0)
I/flutter (27566): POSITION of Red: Offset(0.0, 0.0)
Добавить в контейнерheight: 50.0
print
I/flutter (27566): SIZE of Red: Size(360.0, 50.0)
I/flutter (27566): POSITION of Red: Offset(0.0, 0.0)
Поместите контейнер на дноbottom:0Контейнер снова исчез, плюсbottom:0После позиционирования значения это похоже на абсолютное позиционирование элемента уровня блока в HTML.position:absolute;Значение ширины и высоты по умолчанию равно 0.
print
I/flutter (27566): SIZE of Red: Size(0.0, 50.0)
I/flutter (27566): POSITION of Red: Offset(0.0, 542.0)
Добавьте ширину или добавьте дочерние элементы в контейнер
Используйте контейнер Align, чтобы сделать ширину контейнера полной, но высота по-прежнему равна 0 по умолчанию, поэтому эффект добавления дочерних элементов следующий:
Суммировать
Вы можете использовать функции стека для позиционирования и компоновки, а также идеально использовать соответствующие свойства контейнера. Могут быть и другие более подходящие способы компоновки, добро пожаловать на обсуждение.
Для получения статей о размере и положении контейнера перейдите к моему переводу.