Flutter scroll组件学习分析

前言

        Flutter中Sliver是跟Widget滚动相关的一些Widget。在app的开发过程中,滚动的使用随处可见,商品信息的列表展示,股票下拉刷新最新的行情等等。总结下来就是:要展示的内容的长度超过了当前屏幕的显示范围的时候,我们就会用到滚动组件。最常见的就是ListView和GridView。大部分的情况下,常见的ListView和GridView基本上能满足用户的需求,当我们要实现一些复杂的动画的时候,Sliver组件就派上了用场。比如说下面的动画效果,我们就可以使用Slivers轻松的实现。

        通常可滚动组件的子组件可能会非常多、占用的总高度也会非常大;如果要一次性将子组件全部构建出将会非常昂贵!为此,Flutter中提出一个Sliver(中文为“薄片”的意思)概念,Sliver 可以包含一个或多个子组件。Sliver 的主要作用是配合:加载子组件并确定每一个子组件的布局和绘制信息,如果 Sliver 可以包含多个子组件时,通常会实现按需加载模型。

        只有当 Sliver 出现在视口中时才会去构建它,这种模型也称为“基于Sliver的列表按需加载模型”。可滚动组件中有很多都支持基于Sliver的按需加载模型,如ListView、GridView,但是也有不支持该模型的,如SingleChildScrollView。

Flutter 中的可滚动组件主要由三个角色组成:Scrollable、Viewport 和 Sliver:

一、Scrollable

这个东西万物离不开它,基本所有滚动组件List、grid都用到这个组件,但实际工作上我们并不知节使用它。滚动组件的底层就是它,包含处理一些ScrollPosition监听和手势处理。

二、Viewport

简义视窗,滚动组件的可见渲染区,负责渲染子slivers以及他们之间的位置和大小。

三、Slivers

(1)SliverList、SliverGridView

这个简单来说,就是一个ListView和GridView。

(2)SliverToBoxAdapter

一个Sliver大小是基于它的子child来决定的

(3) SliverFillRemaining

一个sliver可以把Viewport可见区域的剩余空间给它填满

(4)Sliver Fill ViewPort
这个Sliver的大小=Viewport可见区域的大小(一屏的大小)

(5) SliverAppbar

App bar可支持联合滑动的Sliver

(6) SliverPadding

SLiver加上padding

(7) CupertinoSliverRefreshControl

iOS风格的下拉刷新header 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值