我默认在 body 小部件中使用 ListView() 或 SingleChildScrollView() 。因此,如果内容较少,则会滚动内容。我只想在内容大于屏幕高度时启用滚动。如果内容高度小于屏幕高度,需要禁用滚动。
double? physicalSizeScreenHeight =
ui.window.physicalSize.height / ui.window.devicePixelRatio;
physics: physicalSizeScreenHeight <= 700
? AlwaysScrollableScrollPhysics()
: NeverScrollableScrollPhysics(),
它适用于某些设备,不适用于某些设备,具体取决于屏幕宽度和高度,还取决于分辨率。
不检查“物理”中的任何条件,始终或从不,并允许AlwaysScrollableScrollPhysics(),然后取决于内容高度,需要启用/禁用滚动。
任何建议都将有助于解决这个问题。
事实上,
SingleChildScrollView
包裹Column
与直接使用ListView
之间的(许多)区别之一是,前者仅在Column
中有太多项目时才会滚动。
如果这不是您所看到的,则可能存在其他布局问题。
尝试这个简单的布局
SingleChildScrollView
> Column
> Text('Hi')
并验证它不会滚动。
尝试使用它
final size = MediaQuery.of(context);
final apparentSize = size.size.height - size.padding.bottom - size.padding.top
使用此检查您的内容是否超出屏幕尺寸,
if (_scrollController.position.extentInside != _scrollController.position.extentTotal) { // .. your code here }