Flutter - 仅当内容高度大于屏幕高度时才启用滚动

问题描述 投票:0回答:3

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

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

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

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

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

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

flutter flutter-layout
3个回答
7
投票

事实上,

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

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

尝试这个简单的布局

SingleChildScrollView
>
Column
>
Text('Hi')
并验证它不会滚动。


0
投票

尝试使用它

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

0
投票

使用此检查您的内容是否超出屏幕尺寸,

if (_scrollController.position.extentInside != _scrollController.position.extentTotal) { // .. your code here }

© www.soinside.com 2019 - 2024. All rights reserved.