Метод build
Метод build класса SliverPersistentHeaderDelegate
строит виджет шапки для текущего кадра.
shrinkOffset показывает, на сколько пикселей шапка уже сжата.
overlapsContent истинно, когда шапка накрывает список под ней.
Синтаксис
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)
Параметры
| Параметр | Описание |
|---|---|
context |
Контекст, от которого виджет ищут вверх по дереву. |
shrinkOffset |
На сколько шапка уже сжата, в пикселях. |
overlapsContent |
Перекрывает ли шапка контент ниже. |
Пример
Давайте вызовем его в простом экране:
import 'package:flutter/material.dart';
class BuildHeader extends SliverPersistentHeaderDelegate
{
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)
{
return Material(child: Center(child: Text('abcde')));
}
@override
double get maxExtent => 72;
@override
double get minExtent => 36;
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) => false;
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: [
SliverPersistentHeader(delegate: BuildHeader()),
SliverList.list(children: [Text('12345')]),
],
),
),
),
);
}
На экране шапка рисуется методом build при прокрутке.
Пример
Давайте повторим вызов с другими числами:
import 'package:flutter/material.dart';
class BuildHeader2 extends SliverPersistentHeaderDelegate
{
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)
{
var t = shrinkOffset.toStringAsFixed(0);
return Center(child: Text('12345 $t'));
}
@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: BuildHeader2()),
SliverList.list(children: [Text('abcde')]),
],
),
),
),
);
}
На экране текст в шапке показывает текущий shrinkOffset.
Смотрите также
-
класс
SliverPersistentHeaderDelegate,
который часто ставят рядом в прокручиваемых экранах -
метод
shouldRebuild,
который дополняет работу с прокруткой -
виджет
SliverPersistentHeader,
который помогает собрать сложный список -
виджет
SliverFillViewport,
который задаёт поведение или данные прокрутки