Виджет SliverPersistentHeader
Виджет SliverPersistentHeader принимает delegate типа SliverPersistentHeaderDelegate. Параметр pinned оставляет полоску на экране.
Синтаксис
SliverPersistentHeader(delegate: myDelegate, pinned: true)
Параметры
| Параметр | Описание |
|---|---|
delegate |
Объект с minExtent, maxExtent и build. Обязательный параметр. |
pinned |
Не убирать шапку полностью. |
Пример
Давайте сделаем простую прикреплённую шапку:
import 'package:flutter/material.dart';
class SimpleHeader extends SliverPersistentHeaderDelegate
{
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)
{
return Container(color: Colors.blue, child: Center(child: Text('abcde')));
}
@override
double get maxExtent => 80;
@override
double get minExtent => 40;
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) => false;
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: [
SliverPersistentHeader(delegate: SimpleHeader(), pinned: true),
SliverList.list(children: List.generate(20, (i) => Text('12345'))),
],
),
),
),
);
}
На экране синяя шапка сжимается при прокрутке, список идёт под ней.
Пример
Давайте отключим pinned:
import 'package:flutter/material.dart';
class SimpleHeader2 extends SliverPersistentHeaderDelegate
{
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)
{
return Material(child: Center(child: Text('12345')));
}
@override
double get maxExtent => 60;
@override
double get minExtent => 0;
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) => false;
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: [
SliverPersistentHeader(delegate: SimpleHeader2()),
SliverList.list(children: [Text('abcde')]),
],
),
),
),
);
}
На экране шапка может полностью скрыться при прокрутке вниз.
Смотрите также
-
виджет
SliverFillRemaining,
который часто ставят рядом в прокручиваемых экранах -
класс
SliverPersistentHeaderDelegate,
который дополняет работу с прокруткой -
виджет
SliverPadding,
который помогает собрать сложный список -
метод
build,
который задаёт поведение или данные прокрутки