繁体   English   中英

如何在flutter中设置dio package?

[英]how to set dio package in flutter?

我想创建 flutter 应用程序以从 inte.net 下载文件,但是当我使用dio package时,出现错误; 未定义命名参数“onProgress”,我该怎么办?

我的 function

 Future<void> downloadFile() async {
    Dio dio = Dio();

    try {
      var dir = await getApplicationDocumentsDirectory();

      await dio.download(imgUrl, "${dir.path}/myimage.jpg",
          onProgress: (rec, total) {
            print("Rec: $rec , Total: $total");

            setState(() {
              downloading = true;
              progressString = ((rec / total) * 100).toStringAsFixed(0) + "%";
            });
          });
    } catch (e) {
      print(e);
    }

    setState(() {
      downloading = false;
      progressString = "Completed";
    });
    print("Download completed");
  }

onProgress替换为onReceiveProgress

发生此类问题时,请务必检查 function 实施。

Dio 4.0.0 中download方法的方法签名如下:

Future<Response> download(
    String urlPath,
    savePath, {
    ProgressCallback? onReceiveProgress,
    Map<String, dynamic>? queryParameters,
    CancelToken? cancelToken,
    bool deleteOnError = true,
    String lengthHeader = Headers.contentLengthHeader,
    data,
    Options? options,
  });

所以你应该使用onReceiveProgress而不是onProgress

背景资料

onProgress是创建 Dio package 时使用的初始参数。 在 v2.0.14 版本中已更改 自该版本发布以来,似乎有一小部分初始代码文档保持完好无损。

如果这让您感到困惑,那么在 Dio GitHub 项目上提出问题可能是一件好事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM