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

Nic*_*ick 17 listview padding flutter

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

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

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

@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'),
            ),
          ],
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

Sac*_*per 39

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

如果您将 ListView 包裹在Padding或 中Container,它将在内容消失的边缘和上面的小部件之间创建一个间隙。

...
ListView.builder(
    padding: EdgeInsets.only(top: 10),
    itemCount: cards.length,
    itemBuilder: (context, index) {
       return MyCard(
           title: cards[index].title,
       );
    },
)
...
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案,标记的答案将使列表视图滚动到顶部的“空”边距。使用 ListView 的填充只会稍微偏移内容,但滚动仍将位于列表视图的顶部,我相信这是大多数人想要的。 (4认同)

Gov*_*iyo 12

只需将您ListViewContainerContainer部件包装起来,小部件本身具有通过使用设置填充/边距的属性EdgeInsets.only(top:50) // or whatever you want

有关EdgeInsets 的更多信息,请单击此处。

  • 这在 2020 年是错误的。它会在 ListView 的外部添加填充,而不是在容器内上下移动的内容面板。ListView 顶部和其上方的任何内容之间都会有间隙,就像添加边距一样。只需向 ListView 本身添加填充即可。 (3认同)
  • @Nick 顺便说一句,ListView 本身具有填充属性,您也可以将其设置为顶部填充。 (2认同)