首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从SafeArea中删除自动ListView?

如何从SafeArea中删除自动ListView?
EN

Stack Overflow用户
提问于 2018-08-30 21:24:22
回答 4查看 20.7K关注 0票数 35

我刚添加了一个ListView作为Scaffold > Stack的子代,它的顶部似乎有SafeArea。列没有此问题。有什么办法让我把它移走吗?

代码语言:javascript
复制
Container(
  color: Colors.grey[100],
  child: ListView(
    children: <Widget>[
      Image(
        image: snapshot.data.hero,
        height: 300.0,
        fit: BoxFit.cover,
      ),
    ],
  ),
),

ListView

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-30 22:56:23

来自ListView文档:

默认情况下,ListView将自动填充列表的可滚动极限,以避免MediaQuery的填充所指示的部分阻塞。若要避免此行为,请使用零填充属性重写。

所以解决办法是:

代码语言:javascript
复制
ListView(
  padding: EdgeInsets.zero,
  ...
);
票数 105
EN

Stack Overflow用户

发布于 2018-08-31 13:30:33

也找到了这个解决方案

代码语言:javascript
复制
MediaQuery.removePadding(
  context: context,
  removeTop: true,
  child: ListView(...),
)
票数 19
EN

Stack Overflow用户

发布于 2020-05-17 05:33:19

这显然是正确的答案:

代码语言:javascript
复制
padding: EdgeInsets.zero

但我只是想补充一些关于这个问题的额外信息,这对我自己有帮助。

如果不提供填充,它将自动使用MediaQuery.of(上下文).padding的一部分

例如,在垂直列表视图中,默认填充如下:

代码语言:javascript
复制
final EdgeInsets mediaQueryVerticalPadding =
        mediaQuery.padding.copyWith(left: 0.0, right: 0.0);

这意味着,如果您希望将默认行为保留在一个部分中并更改另一个值,则应该使用类似的方法。

例如,只在MediaQuery中保留顶部填充,然后编辑其余内容:

代码语言:javascript
复制
ListView(
    padding: MediaQuery.of(context).padding.copyWith(
        left: 0,
        right: 0,
        bottom: 50,
    ),
    ...
),
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52105557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档