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
相关产品推荐
相关产品推荐

