#flutter
#flutter
Вопрос:
У меня вопрос, почему размер синего контейнера расширит всю область (размер не работает). Спасибо
return Scaffold(
body: Container(
color: Colors.green,
width: 256,
height: 174,
child: Container(
height: 50,
width: 50,
color: Colors.blue,
),
),
);
Комментарии:
1. используйте
alignment:
во внешнемContainer
— или нет … лучше прочитайте Понимание ограничений — в первых абзацах говорится: «Когда кто-то, изучающий Flutter, спрашивает вас, почему какой-то виджет с шириной 100 не имеет ширины 100 пикселей, ответ по умолчанию — сказать им поместить этот виджет в центр, верно? Не делайте этого. Если вы это сделаете, они будут возвращаться снова и снова, спрашивая, почему какой-то FittedBox не работает, почему этот столбец переполнен или что должна делать IntrinsicWidth . Вместо этого…»
Ответ №1:
Из документов:
Поскольку контейнер объединяет ряд других виджетов, каждый со своим собственным поведением макета, поведение макета контейнера несколько сложнее.
Сводка: Контейнер пытается: соблюдать выравнивание, соответствовать размеру дочернего элемента, соблюдать ширину, высоту и ограничения, расширяться, чтобы соответствовать родительскому элементу, быть как можно меньше.
(…)
Если виджет имеет выравнивание, а родительский элемент предоставляет неограниченные ограничения, то контейнер пытается изменить размер вокруг дочернего элемента.
Если виджет имеет выравнивание, а родительский элемент предоставляет ограниченные ограничения, то Контейнер пытается расшириться, чтобы соответствовать родительскому элементу, а затем позиционирует дочерний элемент внутри себя в соответствии с выравниванием.
Попробуйте это:
return Scaffold(
body: Container(
color: Colors.green,
width: 256,
height: 174,
alignment: Alignment.topLeft,
child: Container(
height: 50,
width: 50,
color: Colors.blue,
),
),
);