我用过extended和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:

Expanded(
  child: Foo(),
);

严格等价于:

Flexible(
  fit: FlexFit.tight,
  child: Foo(),
);

当你想要一个不同的适合度时,你可能想要使用Flexible而不是Expanded,这在一些响应式布局中很有用。

FlexFit的区别。紧身和FlexFit。Loose表示Loose将允许其子元素拥有最大大小,而tight则强制其子元素填充所有可用空间。

Expanded()只不过是Flexible() with

Flexible (fit: FlexFit.tight) = Expanded()

但是,Flexible使用fit:FlexFit。默认为松散。

FlexFit。紧=想紧紧地挤进父母的身体,占据尽可能多的空间。

FlexFit。宽松=想要宽松地融入父母,为自己占据尽可能少的空间。

Flexible下的Widget默认为WRAP_CONTENT,尽管您可以使用参数匹配来更改它。

Widget下面的扩展是MATCH_PARENT,您可以使用flex更改它。

扩展-它是灵活的设置适合

class Expanded extends Flexible {
    const Expanded({
        Key key,
        int flex = 1,
        @required Widget child,
    }) : super(
        key: key, 
        flex: flex, 
        fit: FlexFit.tight, 
        child: child
    );
}
Scaffold(
  appBar: AppBar(),
  body: Column(
    children: <Widget>[
      Row(
        children: <Widget>[
          buildExpanded(),
          buildFlexible(),
        ],
      ),
      Row(
        children: <Widget>[
          buildExpanded(),
          buildExpanded(),
        ],
      ),
      Row(
        children: <Widget>[
          buildFlexible(),
          buildFlexible(),
        ],
      ),
    ],
  ),
);