颤动:扩大与灵活

45 dart flutter

我已经使用了两个ExpandedFlexible小部件,它们似乎一样.我错过了两者之间有什么区别吗?

小智 60

灵活下的小部件默认为WRAP_CONTENT,尽管您可以使用参数 Fit 更改它。

Expanded下的小部件是MATCH_PARENT,您可以使用flex更改它。

  • 为 Android 开发者提供了很好的解释! (7认同)
  • 尽管Flexible看起来像WRAP_CONTENT,但我们在Flexible内部使用Align来在可用空间中进行对齐。 (2认同)

Rao*_*che 59

我也认为这个例子也很有帮助

Scaffold(
  appBar: AppBar(),
  body: Column(
    children: <Widget>[
      Row(
        children: <Widget>[
          buildExpanded(),
          buildFlexible(),
        ],
      ),
      Row(
        children: <Widget>[
          buildExpanded(),
          buildExpanded(),
        ],
      ),
      Row(
        children: <Widget>[
          buildFlexible(),
          buildFlexible(),
        ],
      ),
    ],
  ),
);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 灵活仅占用所需的空间,扩展占用所有可用空间,尊重“弹性”因素。有关更多信息,请参阅[“Expanded”小部件的文档](https://api.flutter.dev/flutter/widgets/Expanded-class.html)。 (17认同)

Rém*_*let 55

Expanded 只是一个简写 Flexible

使用扩展这种方式:

Expanded(
  child: Foo(),
);
Run Code Online (Sandbox Code Playgroud)

严格等同于:

Flexible(
  fit: FlexFit.tight,
  child: Foo(),
);
Run Code Online (Sandbox Code Playgroud)

您可能需要使用FlexibleExpanded,当你想要一个不同的fit,有用的一些响应布局.

FlexFit.tight和之间的区别在于FlexFit.loose,松散将允许其孩子具有最大尺寸,同时紧迫力使孩子填充所有可用空间.

  • 用简单的话说,"Flexible.tight"会强迫孩子占用可用的整个空间,而"Flexible.loose"会让孩子们做他们想做的事.有些孩子可能会占据整个空间而有些孩子不会,这取决于他们的类型. (12认同)
  • @CopsOnRoad 的意思是上面的“FlexFit.tight”和“FlexFit.loose”。 (4认同)
  • “最大尺寸”和“可用空间”在这里的意思不是一样的吗? (3认同)

And*_*sky 8

扩展-灵活配合固定

class Expanded extends Flexible {
    const Expanded({
    Key key,
    int flex = 1,
@required Widget child,
}) : super(key: key, flex: flex, fit: FlexFit.tight, child: child);
}
Run Code Online (Sandbox Code Playgroud)


asi*_*oba 7

您可以使用Flexible来调整列中的小部件的大小。它主要用于调整不同子控件的空间,同时保持与其父控件的关系。

同时,扩展更改了发送到的子级的约束;它有助于填充那里的可用空间。因此,当您将孩子包装在扩展小部件中时,它将填充空白区域。

Flutter的YouTube官方频道提供这些视频只是为了帮助那些可能在不久的将来寻找它的人们。

  1. 展开:

  2. 灵活:


Sha*_*tim 6

扩展改变了子部件的约束,因此它填充了任何空白空间。Expanded widget 是一个专门的Flexible widget,具有固定的fit -Flexible(fit: FlexFit.tight)。Expanded widget 也有一个 flex 属性。

\n

灵活使子部件灵活且可调整大小。您可以添加 flex 或 fit 属性来调整大小和间距。

\n

灵活的配合特性包括:

\n
    \n
  • FlexFit.loose - 使用 widget\xe2\x80\x99s 的首选大小。(默认)
  • \n
  • FlexFit.tight - 强制小部件填充其所有额外空间。
  • \n
\n

在此输入图像描述

\n


Yas*_*ash 5

Expanded() 只不过是 Flexible() 与

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

但是,fit :FlexFit.loose默认情况下灵活使用。

FlexFit.tight = 想要尽可能地紧贴父组件并占用尽可能多的空间。

FlexFit.loose = 想要松散地融入父级,占用尽可能少的空间。