flutter上拉加载更多下拉刷新

在pubspec.yaml中
  pull_to_refresh: 1.6.3 
 
页面中
 RefreshController _refreshController;
 int pageNo = 1;
  @override
  void initState() {
    super.initState();
    _refreshController = RefreshController(initialRefresh: false);
  }

  // 下拉刷新
  void _onRefresh() async {
    pageNo = 1;
  _refreshController.loadComplete();
  }

  // 上拉加载更多
  void _onLoading() async {
    pageNo++;
  _refreshController.loadComplete();
  }
RefreshConfiguration.copyAncestor(
        context: context,
        // Viewport不满一屏时,禁用上拉加载更多功能,应该配置更灵活一些,比如说一页条数大于等于总条数的时候设置或者总条数等于0
        hideFooterWhenNotFull: true,
        child: SmartRefresher(
          enablePullDown: true,
          enablePullUp: true,
          header: WaterDropHeader(),
          controller: _refreshController,
          onRefresh: _onRefresh,
          onLoading: _onLoading,
          child: CustomScrollView(
            slivers: [
              SliverList(
                delegate: SliverChildBuilderDelegate((BuildContext context, int i) {
                  return BListItem(
                    height: 50,
                    enableChecked: true,
                    title: data[i].name,
                    onTap: () => onTap(data[i]),
                    titleStyle: TextStyle(fontSize: 15, color: Colors.black),
                    isChecked: _activeCode == data[i].code,
                  );
                }, childCount: data?.length ?? 0),
              ),
            ],
          ),
        ),
      ),
 
需要注意的就是SmartRefresher的child需要直接加这种CustomScrollView或者listview等可滚动的组件
posted @   文磊啊~  阅读(963)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示