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