Как удерживать «SliverPersistentHeader» наверху, пока не будет достигнут первый элемент «SliverList» после прокрутки вниз? - PullRequest
1 голос
/ 08 февраля 2020

Я использую SliverPersistentHeader с SliverList в CustomScrollView. Я не хочу, чтобы мой SliverPersistentHeader закрывался до тех пор, пока не будет достигнут элемент один (индекс: 0) SliverList. Даже если я нахожусь в индексе 50 из списка совпадений, заголовок все равно падает при прокрутке вниз. Есть ли какой-нибудь быстрый способ добиться этого?

Вот что я получаю == >> https://i.imgur.com/yl48Kx2.gif

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

    return SafeArea(
      child: Material(
        child: CustomScrollView(
          slivers: [
            SliverPersistentHeader(
              delegate: MySliverAppBar(expandedHeight: 250),
              pinned: true,
              floating: true,
            ),
            SliverSafeArea(
              sliver: SliverAppBar(
                pinned: true,
                backgroundColor: Color(0xffA2B8A1),
              ),
            ),
            SliverList(
              delegate: SliverChildBuilderDelegate(
                (_, index) => ListTile(
                  title: Text("Index: $index"),
                ),
              ),
            )
          ],
        ),
      ),
    );
  }
}

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Просто установите для float значение false. В противном случае, пожалуйста, загрузите свой класс AppBar

0 голосов
/ 09 февраля 2020

Попробуйте установить pinned на true и сохранить floating как false. Вот что делает каждый из них.

Плавающий : Должен ли заголовок немедленно расти снова, если пользователь меняет направление прокрутки.

Закреплено : Ли прикрепить заголовок к началу области просмотра, как только он достигнет минимального размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...