Flutter:ListView 在开始时有间隙

Ben*_*o98 5 listview ios flutter

几个月前我开始使用 Flutter 并尝试实现我的第一个应用程序。该应用程序应显示一个简单的可滚动配置文件视图。因此,我在 Scaffold 中使用了 ListView 来使屏幕可滚动。作为 ListView 的子级,我显示我想要显示的内容。

到目前为止效果很好。我面临的唯一问题是,listView 在脚手架的开头(屏幕截图中的红色)和 ListView 的开头之间有一个奇怪的间隙。我觉得这看起来不太好,想知道我是否可以弥补这个差距? ListView 和 Scaffold 之间奇怪的差距

我已经测试过这个问题是否与之前的填充有关,但是如果我向脚手架添加一个普通的文本小部件,它就会显示在脚手架的开头。

我的代码如下所示:

Scaffold(
  backgroundColor: Colors.red,
  body: Padding(
    padding: const EdgeInsets.only(left: 10.0, right: 10.0),
    child: ListView(
      children: [
        Text('Status'),
        SizedBox(
          height: 10.0,
        ),
        Padding(
          padding: const EdgeInsets.symmetric(horizontal: 40.0),
          child: Container(
            child: Text(
              'Das hier ist ein Beispieltext disaidhasjdiojsaiodjisajdioajs',
              textAlign: TextAlign.center,
              style: Theme.of(context)
                  .textTheme
                  .headline3
                  .copyWith(fontStyle: FontStyle.italic),
            ),
          ),
        ),
        ... //More Widgets
       ],
    ),
  ),
)
Run Code Online (Sandbox Code Playgroud)

mko*_*lys 5

默认情况下,ListView应用了一些填充,官方文档中提到了这一点(https://api.flutter.dev/flutter/widgets/ListView-class.html):

默认情况下,ListView 将自动填充列表的可滚动末端,以避免 MediaQuery 的填充指示的部分阻塞。要避免此行为,请使用零填充属性进行覆盖。

正如那里提到的,只需覆盖里面的填充值ListView

ListView(
  padding: const EdgeInsets.all(0), // or const EdgeInsets.symmetric(vertical: 0) for vertical padding only
  children: [...],
)
Run Code Online (Sandbox Code Playgroud)

如果情况并非如此,我建议您检查是否确实需要该Scaffold小部件来包装您的ListView.