flutter滑动部件,flutter滑动组件

Flutter 之 Sliver 系列控件

SliverAppBar 控件,一个 MD 的 AppBar 。属性和 AppBar 类似,但做的效果比 AppBar 更加强大。相同的属性具体可以看 Flutter 之 Scaffold 控件 , 里面有 AppBar 控件的介绍。那么还有些没有的属性:

我们是2013年至今的成都网站建设公司,提供网站建设,电商网站设计开发,外贸营销网站建设,响应式网页设计,小程序定制开发、等服务。为客户创造有价值的品牌营销体验,让互联网提升企业的竞争力!

结合 elevation 使用,当elevation 不为 0 的时候,是否显示阴影

AppBar 展开时候的高度

true 的时候下滑AppBar优先滑动展示,展示完成后才给滑动控件滑动

snap 为 true, 则 floating 也要为 true 。true 的时候根据手指松开的位置展开或者收缩AppBar

appBar 收缩到最小高度的时候 appBar 是否可见

SliverAppBar 往往做为 CustomScrollView 的第一个子元素,根据滚动控件的偏移量或者浮动的位置来改变 SliverAppBar 的高度。所以具体用法如下

另外在上面设计到 FlexibleSpaceBar 控件,FlexibleSpaceBar 有个 collapseMode 属性

为 Sliver 系列控件添加一个 padding 。如给上面 SliverAppBar 添加一个 Padding 。

多行多列的列表控件,相当于 Android 的 GridView,有两个属性

SliverChildDelegate,这里有两种方式创建

SliverGridDelegate,也是有两种方式创建

结合上面展示效果

和上面 delegate 属性一样,需要创建一个 SliverChildDelegate 。

比 SliverList 多一个 itemExtent 属性,设置 item 的高度 。item 里面的子控件无法再改动高度。

上面 SliverAppBar 就是结合 SliverPersistentHeader 实现的效果,SliverPersistentHeader 需要一个 SliverPersistentHeaderDelegate 。 实现 SliverPersistentHeaderDelegate 有 4 个方法需要重写

至于效果,具体效果具体分析。

有一个 Widget 属性,主要作用是在 CustomScrollView 里面添加多种不同布局的样式。

占满一屏或者比一屏更多的布局,

滑动剩余部分展示的布局

Flutter 可滚动组件 之 SingleChildScrollView (十五)

SingleChildScrollView 源码定义如下:

需要注意的是, 通常 SingleChildScrollView 只应在期望的内容不会超过屏幕太多时使用 ,这是因为 SingleChildScrollView 不支持基于 Sliver 的延迟加载模型,所以如果预计视口可能包含超出屏幕尺寸太多的内容时,那么使用 SingleChildScrollView 将会非常昂贵(性能差),此时应该使用一些支持Sliver延迟加载的可滚动组件,如 ListView 。

示例1

下面是一个将大写字母 A-Z 沿垂直方向显示的例子,由于垂直方向空间会超过屏幕视口高度,所以我们使用SingleChildScrollView:

示例2

示例3 - 横向滚动

Flutter 滑动、缩放控件

onInteractionEnd 交互结束

onInteractionStart 交互开始

onInteractionUpdate 滑动时候一直会回调

focalPoint 是相对于屏幕左上角的偏移量。

localFocalPoint是相对于父容器区域左上角的偏移量。

scale缩放量。

horizontalScale水平缩放量。

verticalScale竖直缩放量。

rotation旋转量。------ 这里说明能监听到旋转量

还可以通过transformationController进行变换控制,有兴趣的可以自己研究。

参考文章

Flutter:手把手教你使用滚动型列表组件:ListView

ListView的基础创建使用有三种方式:

通过默认构造函数来创建列表,应用场景 = 短列表

这种方式创建的列表存在一个问题:对于那些长列表或者需要较昂贵渲染开销的子组件,即使还没有出现在屏幕中但仍然会被ListView所创建,这将是一项较大的开销,使用不当可能引起性能问题甚至卡顿。

长列表

列表子项之间需要分割线

ListView的进阶使用主要包括:下拉刷新 上拉加载

在Flutter中,ListView结合RefreshIndicator组件实现下拉刷新

通过包裹一层RefreshIndicator,自定义onRefresh回调方法实现

方式有两种:

通过ListView.controller属性可以判断ListView是否滑动到了底部,再进行上拉加载

NotificationListener是一个Widget,可监听子Widget发出的Notification

ListView在滑动时中会发出ScrollNotification类型的通知,可通过监听该通知得到ListView的滑动状态,判断是否滑动到了底部,从而进行上拉加载

NotificationListener有一个onNotification属性,定义了监听的回调方法,通过它来处理加载更多逻辑

不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。

Flutter CustomScrollView 自定义滑动效果

基本和AppBar一样,只是他只能在CustomScrollView中使用,应该很常见,滑动的时候固定appbar,就需要用到他.

大部分和appbar一样,主要说下重要的几个:

是否将导航栏部分固定在appbar的位置.这个需求在实际中很常用. 看看效果图.

当 pinned = false:

可以看到appbar并没有固定在最上面,而是根据内容划出了界面.

当 pinned = true :

这个应该是需求中经常用到的效果了.

当floating = false :

当floating = true:

仔细看 ,区别是在列表整体向下滑动时,appbar开始显示的位置不同.

当为false时 ,向下滑动时,会先降列表内容滑动顶部,然后appbar会跟着列表滑动显示出来.如上图

当为true时, 向下滑动时,appbar会先跟着列表滑动显示出来. 然后继续列表的滑动. 如上图

不能单独使用要配合 ****floating 和 ****pinned

具体效果看官网地址

是否展开,默认false,直接看值为true的效果图,就明白了.

可以再里面添加扩展的内容:

通过测试发现 **后面不是 FlexibleSpaceBar 的话, stretch = true 无效. **

和Padding一样.子控件是 sliver 类型...

上图中在padding中添加了一个背景色为青色的容器widget

里面可以设置不是 sliver 类型的widget。如上图中的 padding中添加的 container

就两个协议,一个是布局协议一个展示协议.基本和GridView一样.也有count和extext... 不设置个数默认无数个

SliverChildListDelegate 这种方式前提是知道cell个数,比较少,好搭建

SliverChildBuilderDelegate 这种方式,可以根据数组去创建,不知道cell个数

和listview差不多.也是协议 不设置个数默认无数个


文章名称:flutter滑动部件,flutter滑动组件
分享链接:http://myzitong.com/article/dssecci.html