【问题标题】:Flutter - Enable scroll only if content height is greater than screen heightFlutter - 仅在内容高度大于屏幕高度时启用滚动
【发布时间】:2021-11-25 13:44:42
【问题描述】:

默认情况下,我在 body 小部件中使用 ListView() 或 SingleChildScrollView()。因此,如果内容较少,它会滚动内容。我只想在内容大于屏幕高度时启用滚动。如果内容高度小于屏幕高度,需要禁用滚动。

double? physicalSizeScreenHeight =
  ui.window.physicalSize.height / ui.window.devicePixelRatio;

physics: physicalSizeScreenHeight <= 700 
? AlwaysScrollableScrollPhysics()
: NeverScrollableScrollPhysics(), 

它适用于某些设备而不适用于某些设备取决于屏幕宽度和高度,还取决于分辨率。

不检查“物理”中的任何条件是否总是或从不并允许 AlwaysScrollableScrollPhysics(),然后取决于内容高度,需要启用/禁用滚动。

任何建议都会有助于解决这个问题。

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    尝试使用它

    final size = MediaQuery.of(context);
    final apparentSize = size.size.height - size.padding.bottom - size.padding.top
    

    【讨论】:

      【解决方案2】:

      事实上,SingleChildScrollView 包装Column 与直接使用ListView 之间的(许多)区别之一是前者仅在Column 中有太多项目时才会滚动。

      如果这不是您所看到的,您可能还有其他布局问题。

      试试这个简单的布局SingleChildScrollView > Column > Text('Hi') 并验证它不会滚动。

      【讨论】:

        猜你喜欢
        • 2019-10-05
        • 2014-09-19
        • 2018-11-10
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 2011-08-16
        • 1970-01-01
        • 2020-10-09
        相关资源
        最近更新 更多