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

Flutter: почему Container(width: 100) на весь экран

Вопрос

Почему Container(width: 100, height: 100, color: Colors.red) прямо в runApp занимает весь экран?

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

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

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

Коротко

Правильный ответ: Корень получает жёсткие ограничения размером с экран, и ребёнок им подчиняется. Корневой виджет получает ограничения «ровно размер экрана»: min и max совпадают.

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

  1. Корень получает жёсткие ограничения размером с экран, и ребёнок им подчиняетсяправильный ответ
  2. У Container без child заданная ширина игнорируется, и он растягивается на родителя
  3. Это известный баг Flutter, поэтому размеры всегда нужно задавать через constraints
  4. Colors.red в Container включает декорацию, которая растягивает его на весь родитель

Разбор

Корневой виджет получает ограничения «ровно размер экрана»: min и max совпадают. Внутри таких ограничений 100 x 100 невозможно, и контейнер становится размером с экран. Если обернуть его в Center, тот ослабит ограничения (loose), и квадрат станет 100 x 100. Это не баг и не особенность цвета.

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

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

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