flutter 上拉加载下拉刷新组件封装

 此处引用第三方依赖pull_to_refresh

话不多说先上图片

然后我们先上代码后说实现 

import 'package:flutter/material.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

class SmartRefresherBuild extends StatefulWidget {
  /// 子级展示数据
  final Widget child;

  /// 总条数
  final int total;

  /// 当前条数
  final int length;

  /// 上拉事件
  final Function upActive;

  /// 下拉事件
  final Function downActive;

  const SmartRefresherBuild(
      {super.key,
      required this.child,
      required this.total,
      required this.length,
      required this.upActive,
      required this.downActive});

  @override
  State<SmartRefresherBuild> createState() => _SmartRefresherBuildState();
}

class _SmartRefresherBuildState extends State<SmartRefresherBuild> {
  final RefreshController _refreshController =
      RefreshController(initialRefresh: false);

  void _onRefrech() async {
    await Future.delayed(const Duration(microseconds: 1000));
    widget.downActive();
    _refreshController.refreshCompleted();
  }

  void _onLoading() async {
    await Future.delayed(const Duration(milliseconds: 1000));
    widget.upActive();
    if (mounted) setState(() {});
    _refreshController.loadComplete();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SmartRefresher(
          enablePullDown: true,
          enablePullUp: widget.length < widget.total,
          header: const WaterDropHeader(),
          controller: _refreshController,
          onRefresh: _onRefrech,
          onLoading: _onLoading,
          child: widget.child),
    );
  }
}

这里呢我们需要传入我们列表模块的Widget  child,我的列表总长度,当前的列表长度, 以及我们的上拉下拉所对应的 事件

纯小白  大佬勿怪 !!!

纯小白  大佬勿怪 !!!

纯小白  大佬勿怪 !!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值