【问题标题】:Flutter: correctly constrain Column widget width to widest child?颤振:正确地将列小部件宽度限制为最宽的孩子?
【发布时间】:2020-11-23 23:19:06
【问题描述】:

我是一名新的 Flutter 开发人员,遇到了一个问题。

我有一个简单的应用程序,它有一个 Column 和 2 个孩子。第一列有一个带有 2 个图标的 Container。第二列在网格布局中有多个子小部件。

我希望将Scaffold 宽度设置为第二列宽度(由其子小部件控制)。这样封闭的Container 就会在应用程序周围绘制一个边框,该边框等于底部列子项的宽度。

这是我的示例代码:https://dartpad.dev/0afd14981917d7464f6ff68719859c1e

我发现的一种方法是用mainAxisSize: MainAxisSize.min 将列视图包裹在Row 中,但随后第一个ColumnContainer 不会扩展到最底层的孩子。我希望第一列中的 2 个图标在 Column 内等间距。

有没有办法到达what I want

编辑:我看到这个问题被否决了,但我不知道为什么?我列出了我执行的所有步骤,但无法得到解决方案。我是新来的,所以我确信我没有研究过所有可能的文档。但我尝试使用ExpandedFlexible 小部件来包装第一个Column,但无法让它工作。

其实,如果我使用Expanded,就会在框架中抛出异常。我无法理解,这就是我在此论坛上发帖寻求帮助的原因。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    在浏览了大量文档后,我偶然发现了 IntrinsicWidth 类,该类根据其子小部件调整自身大小。由于它的使用,似乎有一些性能影响,但我不确定我的应用会受到怎样的影响。

    来自其documentation

    这个类相对昂贵,因为它在最终布局阶段之前添加了一个推测布局通道。尽可能避免使用它。在最坏的情况下,此小部件可能会导致树深度为 O(N²) 的布局。

    我用IntrinsicWidth 包装了Column 小部件并得到了答案。

    那里可能有更好的答案,但目前我太新手找不到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 2020-02-16
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多