В чем разница между жесткими и свободными ограничениями во Flutter
Очень часто можно услышать, что какое-то ограничение
tight
или же
loose
, так что стоит знать, что это значит.
Тугой
BoxConstraints.tight(
Size size
)
ПРОТИВ
свободный
BoxConstraints.loose(
Size size
)
Что такое жесткие и свободные ограничения и в чем разница между ними?
1 ответ
Ограничения означают, что они не оставляют места для окна рендеринга, чтобы определить размер и
loosen
, что означает, что максимум сохраняется, а минимум удаляется. вот полное объяснение:
Тугой
Когда виджет сообщает своему дочернему элементу, что он должен быть определенного размера, мы говорим, что виджет предоставляет ограничения своему дочернему элементу.
А
tight
ограничение предлагает единственную возможность, точный размер. Другими словами, жесткое ограничение имеет максимальную ширину, равную минимальной ширине; и имеет максимальную высоту, равную минимальной высоте.
Если вы пойдете к Флаттеру
box.dart
файл и найдите
BoxConstraints constructors
, вы найдете следующее:
BoxConstraints.tight(Size size)
: minWidth = size.width,
maxWidth = size.width,
minHeight = size.height,
maxHeight = size.height;
Пример ниже говорит нам, что экран заставляет красный цвет быть точно такого же размера, как экран. Экран делает это, конечно, в обход жестких ограничений для файла .
Container(width: 100, height: 100, color: Colors.red)
Красный хочет быть 100 × 100, но не может, потому что экран заставляет его быть точно такого же размера, как экран.
Так заполняет экран.
свободный
Когда виджет сообщает своему потомку, что он может быть меньше определенного размера, мы говорим, что виджет предоставляет
loose
ограничения для своего потомка
Свободное ограничение, с другой стороны, устанавливает максимальную ширину и высоту, но позволяет виджету быть настолько маленьким, насколько он хочет. Другими словами, свободное ограничение имеет минимальную ширину и высоту, равные нулю:
BoxConstraints.loose(Size size)
: minWidth = 0.0,
maxWidth = size.width,
minHeight = 0.0,
maxHeight = size.height;
Пример ниже говорит нам, что Центр позволяет красному Контейнеру быть меньше, но не больше экрана. Центр делает это, конечно, обходя слабые ограничения Контейнера. В конечном счете, сама цель Центра состоит в том, чтобы преобразовать жесткие ограничения, которые он получил от своего родителя (экрана), в ослабленные ограничения для его дочернего элемента (Контейнера).
Center(
child: Container(width: 100, height: 100, color: Colors.red)
)
Экран заставляет быть точно такого же размера, как экран, поэтому заполняет экран.
The
Center
сообщает, что он может быть любого размера, но не больше экрана. Сейчас
Container
действительно может быть 100 × 100.