Выбор ответа Senior Вёрстка и constraints обновлено

Flutter: цена shrinkWrap

Вопрос

Чем плох ListView(shrinkWrap: true) на 2000 элементов внутри другого прокручиваемого списка?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы узнать свою высоту, список строит и меряет всех 2000 детей сразу. Чтобы занять высоту по содержимому, список должен построить и измерить все элементы: ленивость ListView.builder пропадает, растут время кадра и память.

Варианты ответа

  1. Чтобы узнать свою высоту, список строит и меряет всех 2000 детей сразуправильный ответ
  2. Ничем: shrinkWrap только меняет физику прокрутки, построение остаётся ленивым
  3. Список перестаёт прокручиваться на iOS, потому что высоту задаёт содержимое
  4. Элементы перестают переиспользовать State и пересоздаются при каждой прокрутке

Разбор

Чтобы занять высоту по содержимому, список должен построить и измерить все элементы: ленивость ListView.builder пропадает, растут время кадра и память. Для вложенных списков и сложных экранов правильно использовать CustomScrollView со слайверами (SliverList, SliverGrid), где всё лениво в одной прокрутке. С физикой прокрутки и платформой shrinkWrap не связан.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме