Flutter Dio包如何在小部件中显示onSendProgress数据

lvjbypge  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(146)

我正在使用Dio包来处理一个httpapi请求,它运行得很好。但是我有一个要求,我想在向服务器发送数据时显示进度。我有以下代码
CommonApiProvider.dart

static Future saveUserData(Map params) async {
    try {
      var body = json.encode(params);
      final response = await _dio!.post("${globals.apiUrl}SaveUserData/",
          data: body, 
          onSendProgress: (int sent, int total) {
              print("$sent kb of data sent of total $total kb");
      });
      if (response.statusCode == 200) {
        Map<String, String> d = Map<String, String>.from(response.data);
        return d;
      } else {
        return null;
      }
    } catch (exception) {
      return null;
    }
  }

我从我的GetX控制器调用它,如下所示

Future saveUserData() async{
    Map params = {
      ....
    };

    var res = await CommonApiProvider.saveUserData(params);
    ....... 
}

上面的代码可以工作,并在调试控制台中打印进度。但是,我想在Widget中向用户显示此信息。
有人能告诉我怎么做吗?

vh0rcniy

vh0rcniy1#

一种简单的方法是将相同的回调传递给saveUserData

static Future saveUserData(Map params, ProgressCallback onSendProgress) async {
...
      final response = await _dio!.post("${globals.apiUrl}SaveUserData/",
          data: body, 
          onSendProgress: onSendProgress
      );
...
}

相关问题