初始化
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class MySliverDelegate extends SliverPersistentHeaderDelegate {
|
||||
final double? maxHeight;
|
||||
final double? minHeight;
|
||||
final Widget? child;
|
||||
final bool? forceRefresh; //是否需要强制刷新
|
||||
// double? shrinkOffset;
|
||||
final Widget Function(
|
||||
BuildContext context,
|
||||
double shrinkOffset,
|
||||
bool overlapsContent,
|
||||
Widget? child,
|
||||
)? childBuildHandler;
|
||||
Function(double)? callTop;
|
||||
|
||||
MySliverDelegate({
|
||||
required this.maxHeight,
|
||||
required this.minHeight,
|
||||
this.child,
|
||||
this.childBuildHandler,
|
||||
this.forceRefresh = false,
|
||||
this.callTop,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
|
||||
if (callTop != null) callTop!(shrinkOffset);
|
||||
if (childBuildHandler == null) {
|
||||
return SizedBox.expand(
|
||||
child: child,
|
||||
);
|
||||
}
|
||||
return childBuildHandler!(context, shrinkOffset, overlapsContent, child);
|
||||
}
|
||||
|
||||
@override
|
||||
double get maxExtent => max(maxHeight!, minHeight!);
|
||||
|
||||
@override
|
||||
double get minExtent => minHeight!;
|
||||
|
||||
@override
|
||||
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
|
||||
return (forceRefresh ?? false) ? true : maxHeight != oldDelegate.maxExtent || minHeight != oldDelegate.minExtent;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user