Я не понимаю, как LayoutBuilder используется для получения высоты виджета.
Мне нужно отобразить список виджетов и получить их высоту, чтобы я мог вычислить некоторые специальные эффекты прокрутки. Я разрабатываю пакет, а другие разработчики предоставляют виджет (я их не контролирую). Я прочитал, что LayoutBuilder можно использовать для получения высоты.
В очень простом случае я попытался обернуть виджет в LayoutBuilder.builder и поместить его в стек, но я всегда получаю minHeight
0.0
и maxHeight
INFINITY
. Я неправильно использую LayoutBuilder?
EDIT. Кажется, что LayoutBuilder - это не выход. Я нашел CustomSingleChildLayout, что является почти решением.
Я расширил этот делегат, и мне удалось получить высоту виджета в методе getPositionForChild(Size size, Size childSize)
. НО, первый метод, который называется Size getSize(BoxConstraints constraints)
и как ограничения, я получаю 0 до INFINITY, потому что я кладу эти CustomSingleChildLayouts в ListView.
Моя проблема в том, что SingleChildLayoutDelegate getSize
работает так, как будто нужно вернуть высоту представления. В тот момент я не знаю высоты ребенка. Я могу только вернуть constraints.smallest(что равно 0, высота равно 0) или constraints.biggest, что бесконечно, и сбой приложения.
В документах он даже говорит:
... но размер родителя не может зависеть от размера дочернего элемента.
И это странное ограничение.