flutter_sticky_header
Flutter 中的粘性头部实现,以 sliver 作为子项。

特点
- 接受一个 Sliver 作为内容。
- Header 可以与其 sliver 重叠(例如,用于粘性侧边栏)。
- 当 Header 滚动到视口外时进行通知。
- 可以向任何方向滚动。
- 支持重叠(例如,AppBars)。
- 支持非粘性 Header(使用
sticky: false参数)。 - 支持一个控制器,该控制器通知当前粘性 Header 的滚动偏移量。
入门
在您的 flutter 项目的 pubspec.yaml 文件中,添加以下依赖项
dependencies:
...
flutter_sticky_header:
在您的库中添加以下导入
import 'package:flutter_sticky_header/flutter_sticky_header.dart';
要开始使用 Flutter,请查看在线 文档。
SliverStickyHeader
您可以在 CustomScrollView 中放置一个或多个 SliverStickyHeader。
SliverStickyHeader(
header: Container(
height: 60.0,
color: Colors.lightBlue,
padding: EdgeInsets.symmetric(horizontal: 16.0),
alignment: Alignment.centerLeft,
child: Text(
'Header #0',
style: const TextStyle(color: Colors.white),
),
),
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(context, i) => ListTile(
leading: CircleAvatar(
child: Text('0'),
),
title: Text('List tile #$i'),
),
childCount: 4,
),
),
);
SliverStickyHeader.builder
如果您想在滚动时更改 Header 的布局,可以使用 SliverStickyHeader.builder 构造函数。
下面的示例显示了当 Header 滚动离开视口时其透明度的变化。
SliverStickyHeader.builder(
builder: (context, state) => Container(
height: 60.0,
color: (state.isPinned ? Colors.pink : Colors.lightBlue)
.withOpacity(1.0 - state.scrollPercentage),
padding: EdgeInsets.symmetric(horizontal: 16.0),
alignment: Alignment.centerLeft,
child: Text(
'Header #1',
style: const TextStyle(color: Colors.white),
),
),
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(context, i) => ListTile(
leading: CircleAvatar(
child: Text('0'),
),
title: Text('List tile #$i'),
),
childCount: 4,
),
),
);
您可以在 示例 项目中找到更多示例。