Ошибка неограниченной высоты флаттера при использовании прокладки в столбце внутри другого столбца
Я застрял... Это мой код разбит:
Column(
children: [
Column(
children: [
Text('Whyy'),
Spacer(),
Text('crash?'),
],
),
Text('ok'),
],
),
Это вылетает с ошибкой:
Дочерние элементы RenderFlex имеют ненулевое значение гибкости, но входящие ограничения по высоте не ограничены.
Когда столбец находится в родительском элементе, который не обеспечивает конечного ограничения высоты, например, если он находится в вертикальной прокрутке, он попытается сжать свои дочерние элементы вдоль вертикальной оси. Установка flex для дочернего элемента (например, с помощью Expanded) указывает, что дочерний элемент должен расширяться, чтобы заполнить оставшееся пространство в вертикальном направлении. Эти две директивы взаимоисключающие. Если родитель должен упаковать своего дочернего элемента, дочерний элемент не может одновременно расширяться, чтобы соответствовать своему родителю.
Но почему? С какой стати это рушится?
Parent-Column
находится внутри
Scaffold
с
body
.
Что мне здесь не хватает?
Дайте мне знать, если вам нужна дополнительная информация!
1 ответ
Это связано с тем, что внутренний столбец не имеет ограничений по высоте, поэтому
Spacer
виджет может занимать бесконечно большое пространство. Вы можете установить фактическое ограничение на высоту внутреннего столбца, обернув его
Expanded
(или любой другой виджет ограничения высоты, например
SizedBox
):
Column(
children: [
Expanded(
child: Column(
children: [
Text('No'),
Spacer(),
Text('crash!'),
],
),
),
Text('ok'),
],
),