Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
428 of 1024 menu
◀ ▶

Метод 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,
    который задаёт поведение или данные прокрутки
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить