【发布时间】:2018-08-03 20:44:42
【问题描述】:
在 Flutter 中,Wrap 小部件尝试将子元素放置在主轴上与前一个子元素相邻的位置,如果没有足够的空间容纳子元素,它会在横轴上与现有子元素相邻创建一个新的运行.
因此,例如,如果 3 个孩子适合水平运行,而我们有 4 个孩子,它将有 2 个运行:第一个有 3 个孩子,第二个有 1 个孩子。
相反,在定义了该运行次数后,我希望它“平衡”这些子项的位置,使其占据相同的运行次数,但宽度最少。
在上面的示例中,这意味着第一次运行有 2 个孩子,第二次运行有 2 个孩子。但是,当然,这应该适用于任意数量的任意宽度的子代。
我该怎么做?
【问题讨论】:
-
您是否尝试将其包装到
IntrinsicWidth中? -
我认为唯一的方法是自定义布局。你确定没有办法预测孩子的宽度吗?
-
@boformer 如果每个孩子的宽度是固定且已知的,我想我可以使用 LayoutBuilder 然后计算。
-
@RémiRousselet 我不确定我是否关注。
-
算了,没用。我认为您无法使用现有的小部件获得这样的布局。您唯一的解决方案是创建一个自定义
RenderObject。基本上,用一些自定义规则自己重新创建Wrap。