我只是添加了一个ListView作为它的子级Scaffold > Stack,它似乎在顶部有SafeArea。列没有这个问题。有什么办法可以删除它吗?
Container(
color: Colors.grey[100],
child: ListView(
children: <Widget>[
Image(
image: snapshot.data.hero,
height: 300.0,
fit: BoxFit.cover,
),
],
),
),
Run Code Online (Sandbox Code Playgroud)
Sin*_*afi 13
这显然是正确的答案:
padding: EdgeInsets.zero
Run Code Online (Sandbox Code Playgroud)
但我只是想添加一些有关此问题的附加信息,这些信息对我自己有帮助。
如果您不提供填充,它会自动使用 MediaQuery.of(context).padding 的部分内容
例如,在垂直列表视图中,默认填充如下:
final EdgeInsets mediaQueryVerticalPadding =
mediaQuery.padding.copyWith(left: 0.0, right: 0.0);
Run Code Online (Sandbox Code Playgroud)
这意味着如果您想保留一个部分的默认行为并更改其他值,您应该使用类似的方法。
例如,仅保留 MediaQuery 的顶部填充并编辑其余部分:
ListView(
padding: MediaQuery.of(context).padding.copyWith(
left: 0,
right: 0,
bottom: 50,
),
...
),
Run Code Online (Sandbox Code Playgroud)
从ListView文档中:
默认情况下,ListView将自动填充列表的可滚动末端,以避免MediaQuery的填充指示部分障碍。若要避免此行为,请使用零填充属性进行覆盖。
因此解决方法是:
ListView(
padding: EdgeInsets.zero,
...
);
Run Code Online (Sandbox Code Playgroud)
也找到了这个解决方案
MediaQuery.removePadding(
context: context,
removeTop: true,
child: ListView(...),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |