Выбор ответа Junior Вёрстка и constraints спрашивают часто обновлено
Flutter: ListView внутри Column
Вопрос
Почему ListView прямо внутри Column падает с ошибкой «Vertical viewport was given unbounded height» и как это правильно исправить в большинстве случаев?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Column не ограничивает высоту детей, а список хочет всю; нужен Expanded вокруг ListView. Неограниченная высота от Column и желание ListView занять всё доступное несовместимы.
Варианты ответа
- В
Columnвообще нельзя класть прокручиваемые виджеты, поэтому заменить её наStack Columnне ограничивает высоту детей, а список хочет всю; нуженExpandedвокругListViewправильный ответ- Всегда добавлять
shrinkWrap: true: это бесплатно и снимает ошибку в любом случае - Обернуть
ColumnвSingleChildScrollView, тогда список получит конечную высоту
Разбор
Неограниченная высота от Column и желание ListView занять всё доступное несовместимы. Expanded даёт списку конкретный остаток высоты. shrinkWrap: true тоже убирает ошибку, но строит все элементы сразу, на длинных списках это дорого. SingleChildScrollView вокруг Column ошибку не исправит: внутри по-прежнему неограниченная высота.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.