Flutter上拉加载和下拉刷新

Flutter上拉加载和下拉刷新
以下为代码片段

@override
void initState() {
  super.initState();
  _controller = EasyRefreshController(
    controlFinishRefresh: true,
    controlFinishLoad: true,
  );
}

@override
void dispose() {
  _controller.dispose();
  super.dispose();
}

@override
Widget build(BuildContext context) {
  return Scaffold(
       body:EasyRefresh(
            controller: _controller,
            header: const ClassicHeader(
              processingText: '加载中...',
              readyText: '加载中...',
              processedText: '加载完成',
              showMessage: false,
              armedText: '加载中...',
              dragText: '加载中...',
              succeededIcon: Icon(null),
            ),
            footer: const ClassicFooter(
              noMoreText: '到底啦~~~',
              showMessage: false,
              noMoreIcon: Icon(null),
              readyText: '正在努力加载...',
              processingText: '正在努力加载...',
            ),
            onRefresh: () async {
              await Future.delayed(const Duration(milliseconds: 300));
              if (!mounted) {
                return;
              }
              setState(() {
                _count = 2;
              });
              _controller.finishRefresh();
              _controller.resetFooter();
            },
            onLoad: () async {
              await Future.delayed(const Duration(milliseconds: 300));
              if (!mounted) {
                return;
              }
              setState(() {
                _count += 2;
              });
              _controller.finishLoad(_count >= dataArray.length ? IndicatorResult.noMore : IndicatorResult.success);
            },

            child: Container(
              height: MediaQuery.of(context).size.height,
              child: ListView.builder(
                // 设置顶部内边距为零
                shrinkWrap: true,
                // physics: const NeverScrollableScrollPhysics(),
                itemCount: _count,
                itemBuilder: (context, index) {
                  return _buildCell(index);
                },
              ),
            ),
          ),
 backgroundColor: const Color(0xffF5F5F5),
  );
}
_buildCell(int index) {
  return Column(
    children: <Widget>[
      Container(
        width: MediaQuery.of(context).size.width,
        decoration: BoxDecoration(
          color: Colors.white,
          borderRadius: BorderRadius.circular(10),
        ),
        child: Text(
          '待展演',
          style: TextStyle(fontSize: 14, color: Color(0xff1C86F2)),
        ),
      ),
      const SizedBox(
        height: 10,
      ),
    ],
  );
}

以下为自定义加载内容的属性
mainAxisAlignment:在水平方向上对齐图标和文本的方式。
backgroundColor:底部加载小部件的背景颜色。
dragText:拖动时显示的文本。
armedText:准备加载时显示的文本。
readyText:准备好加载时显示的文本。
processingText:正在加载时显示的文本。
processedText:加载完成时显示的文本。
noMoreText:没有更多数据可加载时显示的文本。
failedText:加载失败时显示的文本。
showText:是否显示文本。
messageText:用于显示其他相关消息的文本。
showMessage:是否显示消息文本。
textDimension:文本的尺寸大小。
iconDimension:图标的尺寸大小。
spacing:图标和文本之间的间距。
succeededIcon:加载成功时显示的图标。
failedIcon:加载失败时显示的图标。
noMoreIcon:没有更多数据可加载时显示的图标。
pullIconBuilder:根据下拉进度构建图标的回调函数。
textStyle:文本的样式。
textBuilder:根据加载状态构建文本的回调函数。
messageStyle:消息文本的样式。
messageBuilder:根据加载状态构建消息文本的回调函数。
clipBehavior:小部件的剪辑行为。
iconTheme:图标的主题样式。
progressIndicatorSize:加载指示器(如进度条、旋转加载动画)的尺寸大小。
progressIndicatorStrokeWidth:加载指示器的线条宽度。

————————————————
版权声明:本文为CSDN博主「菜鸟张花花」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45783177/article/details/134395790

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值