Flutter问题记录:Failed assertion: line 2001 pos 12: 'hasSize',ListView组件使用异常

  • 内容
  • 评论
  • 相关

在flutter中,想要渲染一个大列表,就要使用ListView。

在使用ListView组件之前,父组件一定要是有确定的高度,确定的高度不是说高度固定为某一个数值,而是高度不能是动态高度

比如下列代码中,Expanded组件,就不能替换成Container组件,这里使用Expanded组件就是为了填充除了头部区域外剩余的内容,这样Expanded的'高度'就是确定的,子组件 ListView 才能根据父组件的高度进行计算(因为它默认是有滚动条的),否则一定会报错,就像下面图那样。

class Body extends StatelessWidget {
  const Body({
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.all(15),
      child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
        Center(
          child: const Text('头部区域'),
        ),
        Expanded(
            flex: 1,
            child: ListView.builder(
                itemCount: 100,
                itemBuilder: (context, n) {
                  return const Text('列表内容');
                }))
      ]),
    );
  }
}

评论

0条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注