在Flutter应用程序中下载大型pdf文件

时间:2018-04-15 08:25:12

标签: dart flutter

我正在寻找一种方法,使用Flutter应用程序从外部服务器下载大型pdf文件,以便进行离线存储。

但是下载一个大文件(有时是100mb +)需要一些时间。我不希望应用程序陷入等待功能下载。我正在寻找的是一个下载功能,它有一个带有进度报告的回调(类似于:250000/500000字节完成。不一定就是那样。只是我可以使用的东西,并使进度条出来的)。

在Flutter中甚至可以做到这一点吗?我遇到的唯一的事情是HTTP库。但这似乎没有进展回调,只是简单地读取http调用的内容(也没有进度报告)。我希望有人能为我提供一种方法来实现这一目标。

亲切的问候, 凯文沃尔特

修改 C#就是我的意思的完美例子 https://stackoverflow.com/a/9459441/2854656

2 个答案:

答案 0 :(得分:5)

int fileSize;
int downloadProgress = 0;

new HttpClient().get('localhost', 80, '/file.txt')
     .then((HttpClientRequest request) => request.close())
     .then((HttpClientResponse response) {
       fileSize ??= respone.contentLength;
       response.transform(utf8.decoder).listen((contents) {
         downloadProgres += contents.length;
         // handle data
       });
     });

答案 1 :(得分:5)

我想向您推荐dio包,dio是Dart / Flutter的强大Http客户端,它支持拦截器,FormData,请求取消,文件下载,超时等。

dio非常易于使用,在您的情况下,您可以:

 await dio.download(url,savePath,
  // Listen the download progress.
  onProgress: (received, total) {
    print((received / total * 100).toStringAsFixed(0) + "%");
  }
);

一个完整的例子是here

更多详情请参阅Github中的diohttps://github.com/flutterchina/dio