0

我有一个像这样的 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]),

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

4

1 回答 1

0

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

于 2018-12-12T01:13:13.350 回答