100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Flutter开发之——下拉刷新

Flutter开发之——下拉刷新

时间:2019-09-16 01:48:12

相关推荐

Flutter开发之——下拉刷新

一 概述

本文介绍Flutter中的下拉刷新组件:

RefreshIndicator:Material风格的下拉刷新组件CupertinoSliverRefreshControl: ios风格的下拉刷新控件flutter_easyrefresh:第三方上拉刷新,下拉加载组件

二 RefreshIndicator

2.1 构造方法

class RefreshIndicator extends StatefulWidget {const RefreshIndicator({Key? key,required this.child,this.displacement = 40.0,required this.onRefresh,this.color,this.backgroundColor,this.notificationPredicate = defaultScrollNotificationPredicate,this.semanticsLabel,this.semanticsValue,this.strokeWidth = 2.0,this.triggerMode = RefreshIndicatorTriggerMode.onEdge,})}

2.2 常用属性说明

2.3 示例

代码

List<int> _list =[1, 2, 3,];body: RefreshIndicator(color: Colors.red,backgroundColor: Colors.lightBlue,onRefresh: () {setState(() {_list.add(_list.length+1);});return Future.delayed(Duration(seconds:1));},child: ListView.separated(itemCount: _list.length, separatorBuilder: (context,index){return Divider(height: 10,color: Colors.red,);} ,itemBuilder: (BuildContext context, int index){return Center(child: Text("数据${_list[index]}"),heightFactor: 1.5,);}, ),)

效果图

三 CupertinoSliverRefreshControl

3.1 用法说明

CupertinoSliverRefreshControl的用法和RefreshIndicator不同,CupertinoSliverRefreshControl需要放在CustomScrollView中CustomScrollView中需要包含两个属性:sliver(滚动试图内容)和physics(滚动对象)sliver:包含CupertinoSliverRefreshControl和SliverList两个视图组件,CupertinoSliverRefreshControl控制刷新,设置刷新组件的属性;SliverList设置显示的内容physics:控制滚动类,默认为const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),不设置无法下拉滚动

3.2 示例

代码

List<int> _list =[1, 2, 3,];CustomScrollView(physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),slivers: <Widget>[//const CupertinoSliverNavigationBar(largeTitle: Text('Scroll down')),CupertinoSliverRefreshControl(refreshTriggerPullDistance: 100.0,refreshIndicatorExtent: 60.0,onRefresh: () async {await Future<void>.delayed(const Duration(milliseconds: 1000));setState(() {_list.add(_list.length+1);});},),SliverList(delegate: SliverChildBuilderDelegate((BuildContext context, int index) =>Center(child: Column(children: [Text("数据${_list[index]}"), Divider(height: 10,color: Colors.red,)],),),childCount: _list.length,),),],)

效果图

四 flutter_easyrefresh

4.1 仓库地址

Github-flutter_easyrefresh:/xuelongqy/flutter_easyrefresh

4.2 插件地址

flutter_easyrefresh 2.2.1:https://pub.flutter-/packages/flutter_easyrefresh

4.3 插件的安装及卸载

插件安装

打开CMD终端,执行如下指令(自动添加pubspec.yaml依赖)

flutter pub add flutter_easyrefresh

插件卸载

打开CMD终端,执行如下指令(pubspec.yaml依赖被删除)

flutter pub remove flutter_easyrefresh

4.4 示例(基本用法,更多用法请看文档)

代码

List<int> _list =[1, 2, 3,];EasyRefresh(child: ListView.separated(itemCount: _list.length,separatorBuilder: (context,index){return Divider(height: 10,color: Colors.red,);} ,itemBuilder: (BuildContext context, int index){return Center(child: Text("数据${_list[index]}"),heightFactor: 1.5,);}, ),onRefresh: () async{await Future<void>.delayed(const Duration(milliseconds: 1000));setState(() {_list.add(_list.length+1);});},onLoad: () async{await Future<void>.delayed(const Duration(milliseconds: 1000));setState(() {_list.remove(_list.length);});},

效果图

五 参考

CupertinoSliverRefreshControl class

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。