Гибкий занимает только необходимое пространство, а Расширенный занимает все доступное пространство с учетом flexфактора. Дополнительную информацию см. В документации по Expandedвиджету .
Александар
99
Expanded это просто сокращение для Flexible
Использование расширено таким образом:
Expanded(
child: Foo(),
);
строго эквивалентно:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Вы можете использовать Flexibleover, Expandedесли вам нужен другой fit, полезный в некоторых адаптивных макетах.
Разница между FlexFit.tightи FlexFit.looseзаключается в том, что свободная форма позволяет ее дочернему элементу иметь максимальный размер, в то время как жесткое ограничение заставляет его заполнить все доступное пространство.
не Maximum sizeи Available spaceозначает то же самое здесь?
CopsOnRoad
Нет, под максимальным размером я имел в виду что-то вроде наличия в качестве дочернего элемента Flexible ConstrainedBox с maxHeight внутри столбца
Реми Русселе
25
Проще говоря, Flexible.tightзаставит детей занять все доступное пространство и Flexible.looseпозволит детям делать то, что они хотят. Некоторые дети могут занимать все пространство, а некоторые нет, в зависимости от их типа.
CopsOnRoad 08
30
Виджет в разделе « Гибкие» по умолчанию имеет значение WRAP_CONTENT, хотя его можно изменить с помощью параметра «Подогнать».
Виджет в разделе Expanded - MATCH_PARENT, вы можете изменить его с помощью flex .
Вы можете использовать « Гибкий», чтобы изменять размер виджетов в строках и столбцах . В основном он используется для настройки пространства различных дочерних виджетов, сохраняя связь с их родительскими виджетами.
Тем временем Expanded изменяет ограничения, отправляемые дочерним элементам строк и столбцов ; это помогает заполнить там доступные места. Поэтому, когда вы помещаете своего ребенка в расширенный виджет, он заполняет пустые места.
Предоставление этих видео с официального канала Flutter на YouTube только для того, чтобы помочь людям, которые могут поискать это в ближайшем будущем ...
Единственное отличие, если вы используете Flexibleвместо Expanded, заключается в том, что Flexibleего дочерний элемент имеет такую же или меньшую ширину, чем он Flexibleсам, в то время как Expandedзаставляет его дочерний элемент иметь точно такую же ширину, что и Expanded. Но оба Expandedи Flexibleигнорируют ширину своих детей при определении размеров.
Row(children:[
Flexible(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
Flexible(
child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
]
)
Примечание : это означает, что невозможно расширить Rowдетей пропорционально их размерам. Строка либо использует точную ширину дочернего элемента, либо полностью игнорирует ее, когда вы используете Expandedили Flexible.
flex
фактора. Дополнительную информацию см. В документации поExpanded
виджету .Expanded
это просто сокращение дляFlexible
Использование расширено таким образом:
строго эквивалентно:
Вы можете использовать
Flexible
over,Expanded
если вам нужен другойfit
, полезный в некоторых адаптивных макетах.Разница между
FlexFit.tight
иFlexFit.loose
заключается в том, что свободная форма позволяет ее дочернему элементу иметь максимальный размер, в то время как жесткое ограничение заставляет его заполнить все доступное пространство.источник
Maximum size
иAvailable space
означает то же самое здесь?Flexible.tight
заставит детей занять все доступное пространство иFlexible.loose
позволит детям делать то, что они хотят. Некоторые дети могут занимать все пространство, а некоторые нет, в зависимости от их типа.Виджет в разделе « Гибкие» по умолчанию имеет значение WRAP_CONTENT, хотя его можно изменить с помощью параметра «Подогнать».
Виджет в разделе Expanded - MATCH_PARENT, вы можете изменить его с помощью flex .
источник
Expanded
-Flexible
с комплектомclass Expanded extends Flexible { const Expanded({ Key key, int flex = 1, @required Widget child, }) : super( key: key, flex: flex, fit: FlexFit.tight, child: child ); }
источник
Вы можете использовать « Гибкий», чтобы изменять размер виджетов в строках и столбцах . В основном он используется для настройки пространства различных дочерних виджетов, сохраняя связь с их родительскими виджетами.
Тем временем Expanded изменяет ограничения, отправляемые дочерним элементам строк и столбцов ; это помогает заполнить там доступные места. Поэтому, когда вы помещаете своего ребенка в расширенный виджет, он заполняет пустые места.
Предоставление этих видео с официального канала Flutter на YouTube только для того, чтобы помочь людям, которые могут поискать это в ближайшем будущем ...
Расширенный:
Гибкость:
источник
Expanded () - это не что иное, как Flexible () с
Flexible (fit: FlexFit.tight) = Expanded()
но
fit :FlexFit.loose
по умолчанию используется гибкий .FlexFit.tight = Хочет плотно прилегать к родителю, занимая как можно больше места.
FlexFit.loose = Хочет свободно вписаться в родительский элемент, занимая как можно меньше места для себя.
источник
Единственное отличие, если вы используете
Flexible
вместоExpanded
, заключается в том, чтоFlexible
его дочерний элемент имеет такую же или меньшую ширину, чем онFlexible
сам, в то время какExpanded
заставляет его дочерний элемент иметь точно такую же ширину, что иExpanded
. Но обаExpanded
иFlexible
игнорируют ширину своих детей при определении размеров.Row(children:[ Flexible( child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))), Flexible( child: Container(color: Colors.green, child: Text(‘Goodbye!’))), ] )
Примечание : это означает, что невозможно расширить
Row
детей пропорционально их размерам. Строка либо использует точную ширину дочернего элемента, либо полностью игнорирует ее, когда вы используетеExpanded
илиFlexible
.источник