隐藏SliverAppBar

时间:2018-12-11 21:21:13

标签: flutter flutter-layout flutter-sliver

我有一个像这样的SliverAppBar设置:

class PostScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            SliverAppBar(
              floating: true,
              pinned: false,
              snap: true,
              title: Text('News'),
              forceElevated: true,
              actions: [
                IconButton(
                  icon: Icon(Icons.share),
                  tooltip: 'Share',
                  onPressed: () {
                    // TODO
                  },
                ),
              ],
            ),
          ];
        },
        body: ListView(
          padding: EdgeInsets.all(0),
          children: <Widget>[
            // ...
          ],
        ),
      ),
    );
  }
}

每当我滚动页面时,应用栏都会按预期显示/重新出现,但是当隐藏应用栏时,设备状态栏会显示在我的内容顶部(至少在iOS上,尚未通过Android进行过测试) )。我知道我可以使用以下代码段将其隐藏:

SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]),

但是我无法弄清楚仅在隐藏应用程序栏时如何触发它,而且一旦应用程序栏重新出现也重新启用状态栏。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我有一个建议,尽管不一定是一个好建议。但是您可以使用ScrollController,找到手动隐藏应用程序栏的位置(我假设kToolbarHeight周围的某处,在所有设备上应该都相同),然后使用它触发启用或禁用系统覆盖。 >