我用过extended和Flexible小部件,它们的工作原理是一样的。
扩展和灵活之间的区别是什么?
我用过extended和Flexible小部件,它们的工作原理是一样的。
扩展和灵活之间的区别是什么?
当前回答
灵活的默认值将共享父部件的可用空间,但不会强制子部件适应该空间。
Expanded将共享父小部件的可用空间,并强制子小部件更改其宽度/高度以填充可用空间。
事实上,Expanded扩展了Flexible,这是一个带有FlexFit.tight的Flexible。详见官方文件。
这里一行有一个Container小部件和三个Flexible Widgets(flex = 1, fit = FlexFit.loose)。我们可以看到三个灵活的小部件共享相同的maxWidth(可用屏幕宽度的1/3),蓝色的小部件希望比它更大,而其他小部件希望比它更小。但是我们可以看到,蓝色的家伙有maxWidth作为它的宽度,而其他小部件的宽度正好适合它们的内容。
下面是上图的代码:
Row(
mainAxisSize: MainAxisSize.max,
children: [
Container(
color: Colors.teal,
child: Text(
'Container Text ',
)),
Flexible(
child: Container(
color: Colors.blue,
child: Text(' Text.Flexible Text.Flexible Text.Flexible.')),
),
Flexible(
child: Container(
color: Colors.yellow, child: Text('Flexible Text.')),
),
Flexible(
child: Container(
color: Colors.lightGreen, child: Text('Flexible.')),
),
],
)
其他回答
您可以使用Flexible来调整行和列中的小部件大小。它主要用于调整不同子小部件的空间,同时保持与它们的父小部件的关系。
同时,Expanded改变了发送给行和列的子节点的约束;它有助于填补那里的可用空间。因此,当您将子组件包装在一个Expanded小部件中时,它会填充空白区域。
提供这些来自Flutter官方YouTube频道的视频只是为了帮助人们,他们可能会在即将到来的未来寻找这个…
扩展: 灵活:
Expanded()只不过是Flexible() with
Flexible (fit: FlexFit.tight) = Expanded()
但是,Flexible使用fit:FlexFit。默认为松散。
FlexFit。紧=想紧紧地挤进父母的身体,占据尽可能多的空间。
FlexFit。宽松=想要宽松地融入父母,为自己占据尽可能少的空间。
Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
Row(
children: <Widget>[
buildExpanded(),
buildFlexible(),
],
),
Row(
children: <Widget>[
buildExpanded(),
buildExpanded(),
],
),
Row(
children: <Widget>[
buildFlexible(),
buildFlexible(),
],
),
],
),
);
Flexible下的Widget默认为WRAP_CONTENT,尽管您可以使用参数匹配来更改它。
Widget下面的扩展是MATCH_PARENT,您可以使用flex更改它。
灵活的默认值将共享父部件的可用空间,但不会强制子部件适应该空间。
Expanded将共享父小部件的可用空间,并强制子小部件更改其宽度/高度以填充可用空间。
事实上,Expanded扩展了Flexible,这是一个带有FlexFit.tight的Flexible。详见官方文件。
这里一行有一个Container小部件和三个Flexible Widgets(flex = 1, fit = FlexFit.loose)。我们可以看到三个灵活的小部件共享相同的maxWidth(可用屏幕宽度的1/3),蓝色的小部件希望比它更大,而其他小部件希望比它更小。但是我们可以看到,蓝色的家伙有maxWidth作为它的宽度,而其他小部件的宽度正好适合它们的内容。
下面是上图的代码:
Row(
mainAxisSize: MainAxisSize.max,
children: [
Container(
color: Colors.teal,
child: Text(
'Container Text ',
)),
Flexible(
child: Container(
color: Colors.blue,
child: Text(' Text.Flexible Text.Flexible Text.Flexible.')),
),
Flexible(
child: Container(
color: Colors.yellow, child: Text('Flexible Text.')),
),
Flexible(
child: Container(
color: Colors.lightGreen, child: Text('Flexible.')),
),
],
)