Flutter学习总结(十五、Flutter列表)

Flutter列表

一起从0开始学习Flutter!

基本上的组件学的差不多了,我们开始一起来学习日常用的最多的列表功能。列表我们一般常用的有ScrollView,ListView,和GridView,在Flutter中也是有一一对应的组件,在Flutter里ScrollView是抽象类无法直接被实例化,我们可以使用它的子类,如NestedScrollView,BoxScrollView,在Flutter比较特殊ListView,GridView也是ScrollView的子类。我们依次看下。

1.NestedScrollView

这里的NestedScrollView跟Android中的意义不一样,在Android中是直接一个可以滑动的列表,我们将子View放到ScrollView下的ViewGroup中就可以实现一个页面的滚动,而这里的NestedScrollView是做了一个包含TabBar的一个封装,我们可以利用它轻松的实现向上滑动的时候顶部的折叠。

const NestedScrollView({
   
    Key key,
    this.controller,//滚动操作的控制器,给我们一个默认值_NestedScrollController,如果需要修改可以模仿来做更改
    this.scrollDirection = Axis.vertical, //滚动的方向,Axis.vertical竖向滚动,horizontal横向滚动
    this.reverse = false,//是否页面做翻转,如果是True则bar在下面,滚动的在上面
    this.physics,//当用户停止滑动,滑动到顶部时的动作
    @required this.headerSliverBuilder,//参照下面的详细说明
    @required this.body,//参照下面的详细说明
    this.dragStartBehavior = DragStartBehavior.start,//拖拽开始的状态
  })

headerSliverBuilder
向上滑动的时候的折叠区域,可以传入一组的控件 List,如果我们在向上滑动的时候可以折叠的话我们需要返回一个SliverOverlapAbsorber,SliverOverlapAbsorber稍后我们做详细解释。
body
传入一个可以滑动的布局,比如我们可以传入一个CustomScrollView,我们则可以通过CustomScrollView来实现页面的滑动,也可以传入SliverList,SliverGrid让页面滚动起来。
先来看下上面提到的SliverOverlapAbsorber。

2.SliverOverlapAbsorber

使用SliverOverlapAbsorber包裹SliverAppBar让在滑动的时候可以进行通知头部,控制AppBar的收放。还是先看下构造函数:

const SliverOverlapAbsorber({
   
    Key key,
    @required this.handle, //参照下面的详细说明
    Widget child,//需要控制的组件,一般使用SliverAppBar
  })

handle
作为一个必选参数来控制堆叠时的控件高度,我们一般使用下面NestedScrollView.sliverOverlapAbsorberHandleFor来创建一个默认的操作。

handle:NestedScrollView.sliverOverlapAbsorberHandleFor(context)

3.SliverAppBar

跟AppBar有很多共通的参数,我们可以拿出来它与AppBar的不同之处来作解释:

const SliverAppBar({
   
    Key key,
    this.flexibleSpace,//我们需要显示的标题栏里的内容,可以根据需要进行自己的设置,比如一个Text
    this.forceElevated = false,//是否保留SliverAppBar下面的阴影,True不管是滚动还是停止都有阴影,False则都不显示
    this.expandedHeight
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值