xuelongqy / flutter_easy_refresh

A flutter widget that provides pull-down refresh and pull-up load.
https://xuelongqy.github.io/flutter_easy_refresh/
MIT License
3.84k stars 628 forks source link

RefreshController 调用 callRefresh() 方法时如何禁用动画同时触发 onRefresh 方法 #747

Closed shang1219178163 closed 10 months ago

shang1219178163 commented 11 months ago

1.首先确定是否为EasyRefresh导致 未发现禁用动画属性;

2.详细描述问题现象 希望提供禁用动画同时触发 onRefresh 方法的属性;

xuelongqy commented 11 months ago

个人拙见,你直接调用onRefresh里面的关键代码不就行了?

shang1219178163 commented 10 months ago

目前是这样的,觉得不够优雅,封装业务组件(含请求刷新加载),一个触发数据更新的入口最佳。

xuelongqy commented 10 months ago

不是很理解这个需求嘞,想知道一下应用场景。既然都用到下拉刷新了,为什么要禁用动画呢?

shang1219178163 commented 10 months ago

首屏加载不想要下拉刷新;我们首页是类似微信的会话列表,第一次登录进去,因为请求方法在 WidgetsBinding.instance.addPostFrameCallback((_) { _refreshController.callRefresh(); }); 中,所以会自动触发刷新动画,有点奇怪;但是我在整个页面都是用 _refreshController 进行刷新控制的;在 这里单独调用网络方法就有了两个数据刷新触发源,有点纠结。

xuelongqy commented 10 months ago

示例中有。可以指定首次刷新的Header,你设置空视图都可以

shang1219178163 commented 10 months ago

我的 Header 和 footter 实在 main 中全局设置的

/// 上拉刷新,下拉加载全局配置 configRefresh() { EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader( triggerOffset: 50, showMessage: false, dragText: "下拉刷新", armedText: "释放刷新", readyText: "正在刷新...", processingText: "正在刷新...", processedText: "刷新完成", noMoreText: "我可是有底线的 ~", failedText: "刷新失败", messageText: '更新时间 %T', );

EasyRefresh.defaultFooterBuilder = () => const ClassicFooter(
      triggerOffset: 50,
      showMessage: false,
      dragText: "上拉加载",
      armedText: "释放加载",
      readyText: "加载中...",
      processingText: "加载中...",
      processedText: "加载完成",
      noMoreText: "我可是有底线的 ~",
      failedText: "加载失败",
      // messageBuilder: (context, state, text, dateTime) {
      //   return SizedBox();
      // },
      noMoreIcon: SizedBox(),
    );

}

shang1219178163 commented 10 months ago

还有就是我制定了控制器,但是这种实现不了,从程序设计上来说控制器是不是职责缺失?

xuelongqy commented 10 months ago

这不是框架的职责,请使用其他方式自行实现