Flutter中ListView.builder的Scrollbar无法滚动到底部问题
问题解决:Scrollbar无法滚动至ListView.builder底部,存在额外空白
问题原因
在固定高度容器中使用ListView.builder时,若未设置shrinkWrap: true,ListView会默认尝试填充父容器空间,导致Scrollbar计算滚动范围时出现偏差,无法滚动至列表真实底部,同时最后一项下方出现空白。
修复代码
修改ListView.builder,添加shrinkWrap: true属性:
class MyListView extends StatelessWidget { final ScrollController _scrollController = ScrollController(); @override Widget build(BuildContext context) { return Scaffold( body: Container( height: 200.0, color: Colors.white, child: Stack( children: [ Scrollbar( controller: _scrollController, thumbVisibility: true, trackVisibility: true, child: ListView.builder( controller: _scrollController, shrinkWrap: true, // 添加该行解决滚动范围计算问题 itemCount: 30, padding: EdgeInsets.zero, itemBuilder: (BuildContext context, int index) { return Text("List Item ${index + 1}"); }, ), ), ], ), ), ); } }
补充说明
如果添加shrinkWrap后仍存在问题,可以尝试:
- 确认
Scrollbar和ListView共用同一个ScrollController(代码中已实现) - 给ListView设置
physics: ClampingScrollPhysics(),避免滚动行为被父容器干扰 - 检查列表项是否自带额外内边距/外边距,导致滚动范围计算错误
内容的提问来源于stack exchange,提问作者yuu Iri
相关产品推荐
相关产品推荐

