Flutter: правильно ограничить ширину виджета столбца самым широким дочерним элементом? - PullRequest
0 голосов
/ 04 августа 2020

Я новый разработчик флаттера, и у меня возникла проблема.

У меня есть простое приложение с Column с двумя дочерними элементами. В первом столбце есть Container с двумя значками. Второй столбец имеет несколько дочерних виджетов в макете сетки.

Я хочу, чтобы ширина Scaffold была установлена ​​равной ширине второго столбца (которая контролируется его дочерними виджетами). Таким образом, окружающий Container, который dr aws образует границу вокруг приложения, равную ширине дочернего элемента нижнего столбца.

Вот мой пример кода: https://dartpad.dev/0afd14981917d7464f6ff68719859c1e

Один из способов, который я нашел, - обернуть представление столбца в Row с mainAxisSize: MainAxisSize.min, но тогда первый Column Container не расширяется на всю ширину нижний ребенок. Я хочу, чтобы 2 значка в первом столбце были равномерно распределены внутри Column.

Есть ли способ получить то, что я хочу ?

Изменить: Я видел, что вопрос был отклонен, но я не знаю почему? Я перечислил все шаги, которые я выполнил, и не смог найти решения. Я новичок в флаттере, поэтому уверен, что не изучил всю возможную документацию. Но я попытался использовать виджеты Expanded или Flexible, чтобы обернуть первый Column, и не смог заставить его работать.

Фактически, если я использую Expanded, возникает исключение брошен в рамки. Я не мог этого понять, поэтому пишу на этом форуме о помощи.

1 Ответ

0 голосов
/ 08 августа 2020

После того, как я просмотрел много документации, я наткнулся на класс IntrinsicWidth, размер которого соответствует его дочернему виджету. Кажется, есть некоторые эффекты производительности из-за его использования, но я не уверен, как это повлияет на мое приложение.

Из его документации :

Этот класс является относительно дорогостоящим, потому что он добавляет этап спекулятивного макета перед окончательной фазой макета. По возможности избегайте его использования. В худшем случае этот виджет может привести к макету, который будет иметь размер O (N²) по глубине дерева.

Я заключил виджет Column в IntrinsicWidth и получил свой ответ.

Возможно, есть лучший ответ, но в настоящее время я слишком новичок, чтобы его найти.

...