问题描述
在使用CupertinoPageScaffold,在child添加ListView时会有20的top-padding(只有在设置navigationBar的backgroundColor时会出现)。
原因深究
ListView底层调用了SliverPadding,而SliverPadding的默认有20的padding
/// By default, [ListView] will automatically pad the list's scrollable
/// extremities to avoid partial obstructions indicated by [MediaQuery]'s
/// padding. To avoid this behavior, override with a zero [padding] property.
复制代码
解决方法
把ListView用MediaQuery.removePadding组件包裹,并设置removeTop为true
child: new MediaQuery.removePadding(
removeTop: true,
context: context,
child: ListView.builder(
itemCount: _dataSource.length,
itemBuilder: (BuildContext context, int index){
return Material(
color: Colors.green,
child: ListTile(
title: Text(_dataSource[index]),
),
);
},
),
),
复制代码