You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:如何在API调用函数中自定义onChanged回调传递进度

实现API调用进度的回调传递

修改后的API调用函数

首先需要在callThisAPI函数中添加回调参数,用于传递进度百分比:

void callThisAPI({required Map<String, dynamic> header, void Function(double)? onChanged}) {
  _dio.request(
    // 补充你的API路径、请求方法等必填参数
    path: "/your-target-api",
    method: "POST", // 根据实际需求调整请求方法
    options: Options(headers: header),
    onSendProgress: (sent, total) {
      // 避免除数为0的异常情况
      if (total <= 0) return;
      double percent = 1.0 * sent / total;
      // 调用外部传入的回调,传递计算好的进度值
      onChanged?.call(percent);
    },
  );
}

调用示例

调用时传入onChanged回调,即可实时接收进度更新:

double progressPercentage = 0.0;

callThisAPI(
  header: someHeader,
  onChanged: (percentage) {
    progressPercentage = percentage;
    // 这里可添加UI更新逻辑,比如刷新进度条
    print("当前发送进度:${(percentage * 100).toStringAsFixed(2)}%");
  },
);

关键改动说明

  • 给callThisAPI新增可选命名参数onChanged,类型为void Function(double)?,允许外部传入接收百分比的函数
  • 在onSendProgress内部计算进度后,通过onChanged?.call(percent)安全调用外部回调(?.避免回调为空时触发空指针异常)
  • 增加total <= 0的判断,防止出现除以0的运行错误

内容的提问来源于stack exchange,提问作者Shreyansh Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:08:16