Основано на ответе @ rémi-rousselet (за который вы действительно должны ответить):
Вам нужно указать флаттеру, как выровнять элементы, если они меньшеих родитель.В противном случае Flutter обычно заставляет их заполнять пространство
Поскольку вы ничего не указали, первый контейнер раскрывается на весь экран, а зеленый вкл также расширяется, чтобы заполнить все доступное пространство (котороев полноэкранном режиме за вычетом отступов).
return Align(alignment: Alignment.topCenter,
child: Directionality(
textDirection: TextDirection.ltr,
child: Container(
padding: EdgeInsets.symmetric(
vertical: 60.0,
),
color: Colors.blue,
child: Container(
color: Colors.green,
margin: EdgeInsets.symmetric(vertical: 10.0),
height: 200.0,
),
),
),
);
Это уменьшит весь ваш виджет до размера, который вы определили, как 200,0 + 60,0 (заполнение) + 60,0 (заполнение).
Однако,если вы хотите, чтобы внутренний (зеленый) контейнер имел высоту 200, а голубоватый - полноэкранный, вы можете адаптировать ответ к чему-то вроде этого (не стесняйтесь изменять директиву Alignemt в соответствии с вашими потребностями):
return Directionality(
textDirection: TextDirection.ltr,
child: Container(
padding: EdgeInsets.symmetric(
vertical: 60.0,
),
color: Colors.blue,
child: Align(alignment: Alignment.topCenter,
child: Container(
color: Colors.green,
margin: EdgeInsets.symmetric(vertical: 10.0),
height: 200.0,
),
),
),
);