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

Flutter嵌套使用ListView.builder可获取数据但UI不显示问题求助

问题核心原因

你代码的核心错误是在嵌套ListView.builder的itemBuilder中错误使用了Expanded组件:
Expanded仅能在Row、Column这类Flex布局的直接子节点中使用,作用是分配父容器的剩余可用空间。但你内层的ListView已经设置了shrinkWrap: true,会根据子元素总高度自适应自身高度,内部item使用Expanded时无法获取到可扩展的高度边界,会触发布局异常,最终导致内容无法渲染。

修复方案

直接删除内层ListView.builder item中包裹的Expanded组件即可,修改后的_getHeader代码如下:

Widget _getHeader(List<Header> listHeader){
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    mainAxisAlignment: MainAxisAlignment.start,
    children: <Widget>[
      Text('INI HEADER TIDAK MASUK LISTVIEW.BUILDER'),
      ListView.builder(
          shrinkWrap: true,
          scrollDirection: Axis.vertical,
          physics: NeverScrollableScrollPhysics(),
          itemCount: listHeader.length,
          itemBuilder: (context, index){
            // 移除外层的Expanded即可
            return Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Text('${listHeader[index].label} : ${listHeader[index].value}')
              ],
            );
          }
      ),
    ],
  );
}
其他可选排查点
  • 如果外层ListView仍无法显示,确认外层_buildViewDataReport返回的ListView的父容器是否有明确的高度约束:如果外层是放在Column中,需要给ListView套一层Expanded,避免无限高度约束导致布局失败。
  • 调试确认listReport、listHeader的长度是否大于0,避免空数据导致看不到渲染内容。

内容的提问来源于stack exchange,提问作者farhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:24:02