Wrap
不支持包含Expanded
小部件,那么有没有其他方法可以使它的子项根据其最小所需宽度进行布局,但然后使用spaceBetween
填充空间,只在指定的spacing
方面进行拉伸?
|---item---| |--item--|
|--------item---------|
而不是
|-item-| |-item-|
|-item-|
Wrap
不支持包含Expanded
小部件,那么有没有其他方法可以使它的子项根据其最小所需宽度进行布局,但然后使用spaceBetween
填充空间,只在指定的spacing
方面进行拉伸?
|---item---| |--item--|
|--------item---------|
而不是
|-item-| |-item-|
|-item-|
有一个叫做separated_row的包。它是为此而制作的。
你所要做的就是:
在separatorBuilder
参数中提供一个分隔符小部件(例如padding)。
将每个子项包装在一个Expanded
小部件中。
SeparatedRow(
separatorBuilder: (context, index) => Divider(),
children: <Widget>[
Expanded(
child: Text("Item 1"),
),
Expanded(
child: Text("Item 2"),
),
],
)
您还可以将其includeOuterSeparators
参数设置为true
,以在开头和结尾添加分隔符。
LayoutBuilder
在这种方法上存在问题... 但我不明白为什么这会让人感到违反直觉?据我所知,布局分为两个阶段:遍历小部件树传递约束条件(这里应该使用最小所需宽度来分配行),然后返回树并执行实际布局 -WrapAlignment
无论如何都必须应用,那么为什么这里不会有像MainAxisAlignment.stretch
这样的选项呢? - undefined