我刚刚添加了一个ListView作为Scaffold > Stack
的子级,它似乎在顶部有SafeArea。列没有这个问题。我有什么办法可以删除它?
Container(
color: Colors.grey[100],
child: ListView(
children: <Widget>[
Image(
image: snapshot.data.hero,
height: 300.0,
fit: BoxFit.cover,
),
],
),
),
答案 0 :(得分:5)
摘自ListView
文档:
默认情况下,ListView将自动填充列表的可滚动内容 避免MediaQuery指示的局部阻塞 填充。若要避免此行为,请使用零填充进行覆盖 属性。
因此解决方法是:
ListView(
padding: EdgeInsets.zero,
...
);
答案 1 :(得分:1)
也找到了这个解决方案
MediaQuery.removePadding(
context: context,
removeTop: true,
child: ListView(...),
)
答案 2 :(得分:0)
这显然是正确的答案:
padding: EdgeInsets.zero
但是我只是想添加一些有关此问题的其他信息,这对我自己有帮助。
如果不提供填充,它将自动使用MediaQuery.of(context).padding的一部分
例如,在垂直列表视图中,默认填充为:
final EdgeInsets mediaQueryVerticalPadding =
mediaQuery.padding.copyWith(left: 0.0, right: 0.0);
这意味着,如果要保留一个默认行为,而更改其他值,则应使用类似的内容。
例如,仅保留MediaQuery的顶部填充并编辑其余部分:
ListView(
padding: MediaQuery.of(context).padding.copyWith(
left: 0,
right: 0,
bottom: 50,
),
...
),