В чем разница между жесткими и свободными ограничениями во 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.

Другие вопросы по тегам