Flutter Sliver大家族之SliverPersistentHeader()和SliverToBoxAdapter()组件(实现固定头布局)③

Flutter Sliver大家庭之SliverPersistentHeade和SliverToBoxAdapter实现固定头布局③

经过一次付出了却得不到回报的爱情之后,免不了对人起了疑心,总提防着。还以为这是自己长大了,也不过是小资产阶级那点保本的策略:不想赔,就把钱藏好,一分也不要拿出来。这个思路,广泛应用于各类情感,这就是通俗爱情。

今日效果图:

效果图(1.1):

SliverPersistentHeader

加粗是必传参数

SliverPersistentHeader参数类型说明
delegateSliverPersistentHeaderDelegate用来设置布局
pinnedbool是否固定头布局
(默认false)
floatingbool是否浮动头布局
(默认false)

SliverPersistentHeader代码:

initSliverPersistentHeader(String title) {
    return SliverPersistentHeader(
        //是否固定头布局 默认false
        pinned: true,
        //是否浮动 默认false
        floating: false,
        //必传参数,头布局内容
        delegate: MySliverDelegate(
          //缩小后的布局高度
          minHeight: 40.0,
          //展开后的高度
          maxHeight: 80.0,
          child: Container(
              color: Colors.redAccent,
              child: Center(
                child: Text(
                  title,
                  style: TextStyle(fontSize: 18, shadows: [
                    Shadow(color: Colors.white, offset: Offset(1, 1))
                  ]),
                ),
              )),
        ));
  }

class MySliverDelegate extends SliverPersistentHeaderDelegate {
  MySliverDelegate({
    @required this.minHeight,
    @required this.maxHeight,
    @required this.child,
  });
  final double minHeight; //最小高度
  final double maxHeight; //最大高度
  final Widget child; //子Widget布局

  @override
  double get minExtent => minHeight;

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

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

  @override //是否需要重建
  bool shouldRebuild(MySliverDelegate oldDelegate) {
    return maxHeight != oldDelegate.maxHeight ||
        minHeight != oldDelegate.minHeight ||
        child != oldDelegate.child;
  }
}

使用代码:

CustomScrollView(
	....
	slivers: <Widget>[
          initSliverPersistentHeader("第一组"),

          //可隐藏掉哦...
          //initSliverToBoxAdapter(),

          initSliverPersistentHeader("第二组"),

          initSliverList(),
        ],
)

效果图(1.2):

SliverToBoxAdapter

SliverToBoxAdapter参数类型说明
childWidget子Widget布局

SliverToBoxAdapter代码:

 Widget initSliverToBoxAdapter() {
    return SliverToBoxAdapter(
      child: Container(
        height: 70,
        child: Center(
          child: Text(
            "可隐藏掉哦..",
            style: TextStyle(
              //背景黄色
                shadows: [Shadow(color: Colors.yellow, offset: Offset(1, 1))]),
          ),
        ),
      ),
    );
  }

效果图(1.3):


完整项目

完整代码

猜你喜欢:

Flutter Slider,CupertinoSlider滑动条

Flutter Sliver大家族之CustomScrollView和SliverAppBar 组件①

Flutter Sliver大家族之SliverList(),SliverFixedExtentList(),SliverGrid()组件②

Flutter Sliver大家庭之Sliver实战④

原创不易,您的点赞就是最大的支持,点个赞支持一下吧~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s10g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值