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('列表内容');
}))
]),
);
}
}
发表回复