【问题标题】:Flutter SingleChildScrollViewheight to screen heightFlutter SingleChildScrollViewheight 到屏幕高度
【发布时间】:2021-10-29 12:27:35
【问题描述】:

我有一个列和三个元素。我将 mainAxisAlignment 设置为 MainAxisAlignment.spaceBetween,以便第一个元素位于我的应用程序的顶部。中间第二个,底部第三个。 现在我想把它包装在一个滚动视图中,这样如果 Column 的内容高于它可以滚动的视图。 例如,当键盘弹出时会发生这种情况。

我的代码看起来有点像:

Column(
   mainAxisAlignment: MainAxisAlignment.spaceBetween,
   children: [
      Element1(),
      Element2(),
      Element3(),
      ]
)

列在整个屏幕上扩展其高度。这也是我想要的。

但是现在如果我将它包装在 SingelChildScrollView 中,它会缩小到最小内容高度。 :(

SingleChildScrollView(
   child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
         Element1(),
         Element2(),
         Element3(),
         ]
   ),
)

有没有办法让 Column 在屏幕的整个视图高度上继续扩展,并且一旦它的内容高于屏幕高度就可以滚动?

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您应该能够通过使用ConstrainedBoxLayoutBuilder 来做到这一点,这将强制Column 采用最大可用高度

    LayoutBuilder(
          builder: (context, constraints) => SingleChildScrollView(
            child: ConstrainedBox(
              constraints: BoxConstraints(
                minHeight: constraints.maxHeight,
              ),
              child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Element1(),
                    Element2(),
                    Element3(),
                  ]),
            ),
          ),
        )
    

    【讨论】:

    • 这很好,有一个+1,但你应该删除mainAxisSize: MainAxisSize.min,它被父级的严格约束覆盖,代码读者会感到困惑。
    • 这不是我想要的行为,但也是我可以工作的好行为。谢谢你:)
    猜你喜欢
    • 2015-07-26
    • 2019-10-05
    • 2017-03-10
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多