【问题标题】:In Flutter, how to balance the children of the Wrap widget?Flutter中如何平衡Wrap widget的children?
【发布时间】:2018-08-03 20:44:42
【问题描述】:

在 Flutter 中,Wrap 小部件尝试将子元素放置在主轴上与前一个子元素相邻的位置,如果没有足够的空间容纳子元素,它会在横轴上与现有子元素相邻创建一个新的运行.

因此,例如,如果 3 个孩子适合水平运行,而我们有 4 个孩子,它将有 2 个运行:第一个有 3 个孩子,第二个有 1 个孩子。

相反,在定义了该运行次数后,我希望它“平衡”这些子项的位置,使其占据相同的运行次数,但宽度最少

在上面的示例中,这意味着第一次运行有 2 个孩子,第二次运行有 2 个孩子。但是,当然,这应该适用于任意数量的任意宽度的子代。

我该怎么做?

【问题讨论】:

  • 您是否尝试将其包装到 IntrinsicWidth 中?
  • 我认为唯一的方法是自定义布局。你确定没有办法预测孩子的宽度吗?
  • @boformer 如果每个孩子的宽度是固定且已知的,我想我可以使用 LayoutBuilder 然后计算。
  • @RémiRousselet 我不确定我是否关注。
  • 算了,没用。我认为您无法使用现有的小部件获得这样的布局。您唯一的解决方案是创建一个自定义RenderObject。基本上,用一些自定义规则自己重新创建Wrap

标签: flutter flutter-layout


【解决方案1】:

按照 Rémi 的建议,我使用自定义规则重新创建了 Wrap 小部件:https://pub.dev/packages/assorted_layout_widgets 中的 WrapSuper 小部件解决了这个问题。

它并不能完全保证最小的宽度,而是最小的粗糙度,这更准确地说是我想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2021-10-03
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多