SliverPersistentHeader组件 实现Flutter吸顶效果
import 'package:flutter/material.dart';
class StickyHeaderExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
const SliverAppBar(
pinned: true,
expandedHeight: 200.0,
flexibleSpace: FlexibleSpaceBar(
title: Text('Sticky Header Example'),
),
),
SliverPersistentHeader(
pinned: true,
delegate: StickyTabBarDelegate(),
),
// ...其他Sliver列表项
],
),
);
}
}
// 自定义代理来实现吸顶效果
class StickyTabBarDelegate extends SliverPersistentHeaderDelegate {
final TabBar tabBar;
StickyTabBarDelegate({@required this.tabBar})
: assert(tabBar != null);
@override
double get minExtent => tabBar.preferredSize.height;
@override
double get maxExtent => tabBar.preferredSize.height;
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return new Container(
color: Theme.of(context).primaryColor,
child: tabBar,
);
}
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
return true;
}
}
这个代码实例展示了如何在Flutter中使用SliverPersistentHeader
来实现一个吸顶的TabBar。SliverAppBar
组件用于创建固定在顶部的AppBar,并且设置pinned
属性为true以实现吸顶效果。StickyTabBarDelegate
自定义了TabBar的显示,包括最小和最大扩展高度,以及如何根据上下文、收缩偏移量和是否覆盖内容来构建TabBar。
评论已关闭