Я использовал как Expanded
и Flexible
виджеты, и они, похоже, работают одинаково. Есть ли разница между двумя, которые я пропустил?
Flutter: расширенный против гибкого
Ответ 1
Я также думаю, что этот пример тоже полезен
Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
Row(
children: <Widget>[
buildExpanded(),
buildFlexible(),
],
),
Row(
children: <Widget>[
buildExpanded(),
buildExpanded(),
],
),
Row(
children: <Widget>[
buildFlexible(),
buildFlexible(),
],
),
],
),
);
Ответ 2
Expanded
- это всего лишь сокращение для Flexible
Использование расширилось таким образом:
Expanded(
child: Foo(),
);
строго эквивалентно:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Возможно, вы захотите использовать Flexible
Over Expanded
если вам нужна другая fit
, полезная в некоторых Flexible
макетах.
Разница между FlexFit.tight
и FlexFit.loose
заключается в том, что свободный позволяет ребенку иметь максимальный размер, а жесткость заставляет ребенка заполнять все свободное пространство.
Ответ 3
Expanded - гибкий с установленным набором
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(key: key, flex: flex, fit: FlexFit.tight, child: child);
}
Ответ 4
Вы можете использовать Flexible для изменения размера виджетов в строках и столбцах. В основном он используется для настройки пространства различных дочерних виджетов, сохраняя связь с их родительскими виджетами.
Между тем, Expanded изменяет ограничения, отправляемые дочерним элементам строк и столбцов; это помогает заполнить свободные места там. Поэтому, когда вы оборачиваете своего ребенка в расширенный виджет, он заполняет пустые места.
Предоставление этих видео с официального канала Flutter на YouTube, чтобы помочь людям, которые могут искать это в будущем...