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

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