Flutter: расширенный против гибкого

Я использовал как Expanded и Flexible виджеты, и они, похоже, работают одинаково. Есть ли разница между двумя, которые я пропустил?

Ответ 1

Я также думаю, что этот пример тоже полезен

Scaffold(
      appBar: AppBar(),
      body: Column(
        children: <Widget>[
          Row(
            children: <Widget>[
              buildExpanded(),
              buildFlexible(),
            ],
          ),
          Row(
            children: <Widget>[
              buildExpanded(),
              buildExpanded(),
            ],
          ),
          Row(
            children: <Widget>[
              buildFlexible(),
              buildFlexible(),
            ],
          ),
        ],
      ),
    );

enter image description here

Ответ 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, чтобы помочь людям, которые могут искать это в будущем...

  1. Expanded:

  2. Гибкость: