Flutter主ListView无法响应鼠标滚动问题求助
解决Row中ListView滚动异常的问题
核心问题出在Row的布局约束上:你的Row设置了crossAxisAlignment: CrossAxisAlignment.center,这会让右侧承载ListView的SizedBox高度被限制为Row内最高子组件的高度,而ListView需要明确的、足够的高度约束才能正常触发滚动逻辑——哪怕你移除Scrollbar、替换滚动组件,只要高度约束的问题没解决,滚动异常就会持续。
试试这两种修复方案:
方案1:调整Row的交叉对齐方式并给SizedBox添加高度约束
return Scaffold( body: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.stretch, // 改为stretch,让子组件填满Row高度 children: [ SideMenu(context1: context), SizedBox( width: size.width > 1000 ? size.width * 0.825 : size.width * 0.775, height: size.height, // 让SizedBox占满屏幕高度 child: model.sideList.elementAt(model.getIndex).screen, ), ], ), );
方案2:用Expanded替代固定宽度SizedBox(更灵活)
如果不需要固定宽度,用Expanded让右侧区域自动占据Row的剩余空间,同时获取完整的高度约束:
return Scaffold( body: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ SideMenu(context1: context), Expanded( child: model.sideList.elementAt(model.getIndex).screen, ), ], ), );
额外检查点:
- 确保你的ListView没有设置
shrinkWrap: true,这个属性会让ListView高度包裹内容,直接失去滚动能力; - 检查ListView的
physics属性,不要设置NeverScrollableScrollPhysics,保持默认的AlwaysScrollableScrollPhysics即可。
内容的提问来源于stack exchange,提问作者Noman Salhab
相关产品推荐
相关产品推荐

