SliverPersistentHeader是在CustomScrollView中需要在滚动中固定在页面顶部的元素
const SliverPersistentHeader({
Key key,
@required this.delegate,
this.pinned = false,
this.floating = false,
})
其中pinned和floating 不能同时为true
通过切换pinned改变固定状态
其中delegate需要实现SliverPersistentHeaderDelegate
重写其中的build方法实现子类容器, shouldRebuild方法中根据用户自定义重绘条件返回布尔值
class StickyTabBarDelegate extends SliverPersistentHeaderDelegate {
final TabBar child;
StickyTabBarDelegate({@required this.child});
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
return this.child;
}
@override
double get maxExtent => this.child.preferredSize.height;
@override
double get minExtent => this.child.preferredSize.height;
@override
bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
return true;
}
}
作者:SmallStoneSK
链接:https://juejin.im/post/5d3e5b65e51d45775f516b6e
网友评论