Класс BoxConstraints
Класс BoxConstraints описывает, в каких пределах может быть размер.
Четыре числа: minWidth, maxWidth, minHeight, maxHeight.
Их передают в ConstrainedBox и получают от родителя при раскладке.
Синтаксис
BoxConstraints(...)
Параметры
| Параметр | Описание |
|---|---|
minWidth |
Минимальная ширина, которую родитель разрешает дочернему виджету. |
maxWidth |
Максимальная ширина, которую родитель разрешает дочернему виджету. |
minHeight |
Минимальная высота, которую родитель разрешает дочернему виджету. |
maxHeight |
Максимальная высота, которую родитель разрешает дочернему виджету. |
Методы
| Метод | Описание |
|---|---|
constrain |
Возвращает Size, обрезанный текущими min и max по ширине и высоте.
|
constrainHeight |
Возвращает высоту, обрезанную между minHeight и maxHeight. |
constrainWidth |
Возвращает ширину, обрезанную между minWidth и maxWidth. |
copyWith |
Возвращает новые BoxConstraints с подменёнными minWidth, maxWidth, minHeight или maxHeight.
|
deflate |
Уменьшает min и max на отступы edges, как при внутреннем padding. |
expand |
Возвращает BoxConstraints с бесконечными maxWidth и maxHeight.
|
inflate |
Увеличивает min и max на delta по обеим осям.
|
lerp |
Интерполирует между двумя BoxConstraints по доле t от 0 до 1.
|
loose |
Возвращает ограничения с minWidth и minHeight, равными нулю. |
loosen |
Ослабляет ограничения, обнуляя минимальные ширину и высоту. |
tight |
Задаёт min и max равными указанным width и height. |
tightFor |
Возвращает tight-ограничения для конечных width и height, если они заданы. |
tightForFinite |
Как tightFor, но только для конечных width и height. |
tighten |
Поднимает minWidth и minHeight до текущих maxWidth и maxHeight. |
Пример
Давайте посмотрим BoxConstraints в рабочем примере:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Text('abcde'),
),
),
);
}
На экране строка 'abcde'. Сами пределы в этот класс передают виджету, который ограничивает размер.
Пример
Давайте изменим второй пример с BoxConstraints:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Column(
children: [
Text('abcde'),
Text('12345'),
],
),
),
),
);
}
Второй пример тоже показывает строку. Пределы размера по-прежнему задаёт виджет, которому передали BoxConstraints.
Смотрите также
-
виджет
Positioned,
который задаёт координаты вStack -
виджет
Container,
который совмещает отступ и оформление -
виджет
Padding,
который задаёт только отступ -
виджет
Center,
который центрирует