使用flutter_allroundrefresh进行下拉刷新、上拉加载、初始转圈、错误页面、异常重试 一条龙功能

由于耦合度较高的问题flutter_allroundrefresh 已经停止更新,请查看更优秀的插件flutter_futrue
更多相关知识请查看:移动开发知识体系总章(Java基础、Android、Flutter)

在使用Flutter 进行demo调试、项目研发的时候,你是否为下拉刷新组件发愁,你是否为初始转圈空数据页面发愁、网络差或服务器超时的错误页面发愁,如果有,请您了解一下这个物超所值的组件:flutter_allroundrefresh

flutter_allroundrefresh 特性

  • 页面初始转圈
  • 手机无网络错误页面
  • 下拉刷新
  • 上拉加载更多
  • 网络差或服务器超时错误页面
  • 无数据错误页面
  • 登录失效处理
  • 错误页面重试机制
  • 定制转圈
  • 定制错误页面
  • 定制/适配状态码
  • 支持国际化
  • 支持 android 、ios

即从打开页面到展示数据或异常情况 的处理方案

废话不多说:
Flutter Pub组件库之 flutter_allroundrefresh 地址
Github之 flutter_allroundrefresh 地址 欢迎 start
效果图&截图(在文章底部,由于图片较多较大,需要先看效果的童鞋请滑到最后)

**使用 flutter_allroundrefresh **
1.添加依赖

dependencies:
  flutter_allroundrefresh: ^2.0.0

2.引入

import 'package:flutter_allroundrefresh/future_refresh.dart';

3.在入口方法中进行初始化

AFutureWidget.init( );

3.1.在入口方法中进行初始化(init方法中配置国际化)

AFutureWidget.init(  loadingText: '加载中...',...);

4.具体页面的使用

class SimplePage3 extends StatefulWidget {
  @override
  _SimplePage3State createState() => _SimplePage3State();}

class _SimplePage3State extends State<SimplePage3> with TickerProviderStateMixin {
  var page = 1;
  List<SimpleDataBean> modelList = [];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar( title: const Text('AFutureWidget 组件DEMO'),),
      body: AFutureWidget(
        childWidget: yourContentWidget(),//必填
        //errorWidget: YourError1Widget(),//支持自定义
        //progressWidget: YourProgress2Widget(),//支持自定义
        fRefresh: SimpleDao.getData10(page: 1),//必填,page 必须写1
        fLoading: SimpleDao.getData10(page: page),//有加载更多必填
        onLoadingCallback: () {page = page + 1;setState(() {});},//有加载更多必填
        onRefreshCallback: () {page = 1;modelList.clear();setState(() {}); },//必填
        tokenInvalidCallback: () { },,//登录失效回调
        dataCallback: (List<dynamic> data) {
          data.forEach((v) {
            modelList.add(new SimpleDataBean.fromJson(v));
          });
          setState(() {});
        },//必填
      ),
    );
  }
 Widget yourContentWidget() {
    return ListView.builder(
      itemCount: modelList.length,
      itemBuilder: (BuildContext context, int index) {
        return Container(
          alignment: Alignment.center,
          height: 80.0,
          child: Text('${modelList[index].name}'),
        ); },);
  }
}

为了达到一目了然的效果,上面贴上了整个页面的代码,不难发现
1.该页面只需要配置flutter_allroundrefresh 下的具体组件AFutureWidget 即可
2.具体页面的ListView/GridView 的代码,即Item样式编写

注意事项
1.获取接口API数据的方法,即fRefresh的参数(方法),这里需要注意,无论是get/post/put/delete请求,具体方法的返回值必须是Future<dynamic>,详情参考demo
2.errorWidget: YourError1Widget(),//支持自定义错误页面,demo/截图展示了默认纯文字、静态图、和动图三种效果
3.progressWidget: YourProgress2Widget(),//支持自定义初始转圈,demo/截图展示了默认转圈、动图两种效果
4.tokenInvalidCallback: 登录失效的回调方法,根据项目决定是否需要(作者的项目是弹出对话框,点击确定进入登录页面)
5.接口API返回的json建议使用 json_to_dart 进行格式化(有个小秘密在demo里。。。)

5.接口API返回的json格式说明(若你的后台有自己的code规则则需要在初始化方法AFutureWidget.init();中进行适配)

{
    "code": "默认200访问成功,404无数据,900登录失效",
    "msg": "",
    "data": {},//  "data": [],
}

完成到这里,接入 flutter_allroundrefresh 组件的优势也就很清晰了
1.编写/测试接口API数据获取的方法(作者使用了java中的dao概念,木有使用bloc),
2.编写具体页面的Item
3.那么整体项目就包含:载框架搭建+dao层+UI层,不管是个人开发,还是团队开发,项目就很清晰了,分工与工作量就都很好分配了(非列表页面即将适配哈,以及返回页面刷新的问题)

常见问题详见文档

有任何问题、建议、意见 ,欢迎到 github提issues

或者加入QQ群:10788108

all.gif

bottomBar.gif
def.gif

error1.gif
error2.gif

head1.gif
head2.gif

loading more.gif
no data.gif

relogin.gif
tabbar.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341