如何在 Flutter 中添加 ListView.builder 的填充顶部?

Posted

技术标签:

【中文标题】如何在 Flutter 中添加 ListView.builder 的填充顶部?【英文标题】:How to add padding top of the ListView.builder in Flutter? 【发布时间】:2019-06-19 03:23:21 【问题描述】:

我在 Flutter 项目中主要使用 ListView 和 ListView.builder。 大多数情况下,我使用构建小部件主体部分来放置 ListView 或 ListView.builder。我查看了 Flutter 文档并没有提供任何信息或示例。

这是一个基本的 ListView 示例。如您所见,ListView 放置在正文中。我想要一些身体顶部的填充物,然后是 ListView。填充结束,ListView 开始。

如何在 Flutter 中添加 ListView.builder 的 padding top?

@override
  Widget build(BuildContext context) 
    final title = 'Basic List';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: Text(title),
        ),
        body: // how to add some padding here then ListView
             ListView(
          children: <Widget>[
            ListTile(
              leading: Icon(Icons.map),
              title: Text('Map'),
            ),
            ListTile(
              leading: Icon(Icons.photo_album),
              title: Text('Album'),
            ),
            ListTile(
              leading: Icon(Icons.phone),
              title: Text('Phone'),
            ),
          ],
        ),
      ),
    );
  

【问题讨论】:

【参考方案1】:

如果您想为随着项目上下滚动的内部内容添加填充,您只需将padding 添加到ListView 本身即可。

如果将 ListView 包装在 PaddingContainer 中,则会在内容消失的边缘与上方的小部件之间产生间隙。

...
ListView.builder(
    padding: EdgeInsets.only(top: 10),
    itemCount: cards.length,
    itemBuilder: (context, index) 
       return MyCard(
           title: cards[index].title,
       );
    ,
)
...

【讨论】:

这是正确答案,标记的答案将使列表视图滚动到顶部的“空白”边距。使用 ListView 的 padding 只会稍微偏移内容,但滚动仍然是列表视图的顶部,我相信这是大多数人想要的。【参考方案2】:

只需将您的 ListView 包装到 Container 小部件和 Container 小部件,它自身具有通过使用 EdgeInsets.only(top:50) // or whatever you want 设置 padding/margin 的属性

更多关于EdgeInsets click Here.的信息

【讨论】:

感谢 Govaadiyo,但我的 ListView 很长,如果我放置容器会出现溢出问题吗? 尝试按照您放置的代码进行包装。不会出现此类问题。 @Nick BTW ListView 本身具有填充属性,您也可以将其设置为顶部填充。 ListView 填充它会影响它的所有孩子,不是吗?我有一个 ListView.builder,有时它从服务器获取 300 个数据,有时它获取 500 个或更多。 Container 是否根据 ListView 项进行扩展? 这在 2020 年是错误的。它将在 ListView 的外部添加填充,而不是在容器内上下移动的内容面板。您将在 ListView 的顶部与其上方的任何内容之间有一个间隙,就好像您正在添加边距一样。只需向 ListView 本身添加填充。

以上是关于如何在 Flutter 中添加 ListView.builder 的填充顶部?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 如何在 Listview 构建器顶部添加项目?

如何在 Flutter 中将 Hero 动画添加到我的 ListView?

如何在颤振快速拨号中添加 ListView?

在flutter中使用listview.builder添加多个彼此不同的动态小部件

无法在 Flutter 中添加 ListView

将 Text 小部件添加到其子项映射到 Flutter 的 ListView?