如何使SliverPersistentHeader过度增长?

时间:2020-03-12 14:48:54

标签: flutter

所以我有一个SliverPersistentHeader,当我向下滚动并使其中的文本开始增加大小时,我希望它能够扩展/过度增长,例如在iPhone的“联系人”应用程序中。该怎么做?

1 个答案:

答案 0 :(得分:0)

使用geaderDelegate

例如

class _HeaderDelegate extends SliverPersistentHeaderDelegate {
  final double minHeight;
  final double maxHeight;
  final Widget child;

  _HeaderDelegate({
    @required this.minHeight,
    @required this.maxHeight,
    @required this.child,
  });

  @override
  Widget build(
      BuildContext context, double shrinkOffset, bool overlapsContent) {
    return SizedBox.expand(child: child);
  }

  @override
  double get maxExtent => math.max(maxHeight, minHeight);

  @override
  double get minExtent => minHeight;

  @override
  bool shouldRebuild(_HeaderDelegate oldDelegate) {
    return maxHeight != oldDelegate.maxHeight ||
        minHeight != oldDelegate.minHeight ||
        child != oldDelegate.child;
  }
}



SliverPersistentHeader(
     delegate: _HeaderDelegate(
         minHeight: 50,
         maxHeight: 150,
         child: Container(
           color: Colors.blue,
           child: Center(
             child: Column(
               children: <Widget>[
                 Text('list ' , style: TextStyle(fontSize: 30),),
               ],mainAxisAlignment: MainAxisAlignment.center,
             ),
           ),
         )),
     pinned: true,
   ),