Скрыть строку состояния устройства при скрытии SliverAppBar - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть настройка 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 голосов
/ 12 декабря 2018

У меня есть предложение, хотя и не обязательно отличное.Но вы можете использовать ScrollController, найти точку, в которой панель приложения скрыта вручную (я предполагаю, что где-то около kToolbarHeight, которая должна быть одинаковой на всех устройствах), а затем использовать ее для включения или отключения системного наложения.

...