You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:14:54