[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5dCIPdBm-1635860443089)(https://ducafecat.tech/2021/11/03/translation/downloading-a-file-in-flutter/2021-11-02-21-06-58.png)]

原文在这里插入代码片

https://medium.com/halkbank-mobile-tech/downloading-a-file-in-flutter-d6762825c0a4

代码

https://github.com/deremakif/FlowderSample

参考

  • https://pub.dev/packages/path_provider
  • https://pub.dev/packages/flutter_downloader
  • https://pub.dev/packages/flowder
  • https://pub.dev/packages/open_file
  • https://pub.dev/packages/percent_indicator

正文

今天我要写一篇关于 flowder package 的文章。我用它从服务器上下载文件。有很多方法可以做到这一点,而且还有更受欢迎的软件包如 flutter_downloader 。但我更喜欢 flowder 软件包,因为它的实现很简单。

首先,如果下载文件夹不存在,我们应该创建它。要做到这一点,我们需要导入 path_provider package。并在当前页的 initState() 中调用 initPlatformState 方法。

Future<void> initPlatformState() async {_setPath();if (!mounted) return;
}void _setPath() async {Directory _path = await getApplicationDocumentsDirectory();String _localPath = _path.path + Platform.pathSeparator + 'Download';final savedDir = Directory(_localPath);bool hasExisted = await savedDir.exists();if (!hasExisted) {savedDir.create();}path = _localPath;
}

现在,我们有下载文件夹来保存文件。包的下载方法需要两个参数: URL 和选项。您可以根据需要自定义选项。

ElevatedButton(onPressed: () async {options = DownloaderUtils(progressCallback: (current, total) {final progress = (current / total) * 100;print('Downloading: $progress');},file: File('$path/loremipsum.pdf'),progress: ProgressImplementation(),onDone: () {OpenFile.open('$path/loremipsum.pdf');},deleteOnCancel: true,); core = await Flowder.download("https://assets.website-files.com/603d0d2db8ec32ba7d44fffe/603d0e327eb2748c8ab1053f_loremipsum.pdf",options,);
},

我使用 OpenFile package 包在文件完成下载过程时打开它。我还使用了 percent_indicator package 包来显示进展。

如果以后不需要使用该文件,可以在关闭文档后删除该文件。重要的是不要增加应用程序的大小。

OpenFile.open('$path/loremipsum.pdf').then((value) {File f = File('$path/loremipsum.pdf');f.delete();
});
  • 应用程序演示

示例项目的源代码。

  • GitHub - deremakif/FlowderSample
    https://github.com/deremakif/FlowderSample

© 猫哥

  • https://ducafecat.tech/

  • https://github.com/ducafecat

  • 微信群 ducafecat

Flutter 下载文件操作相关推荐

  1. ftp: connect: 没有到主机的路由_Qt之FTP上传/下载文件操作

    ​一个简单的Ftp客户端文件上传/下载操作示例. 上传文件 QNetworkAccessManager manager; QUrl url; /* 设置通讯协议 */ url.setScheme(&q ...

  2. Qt之FTP上传/下载文件操作

    一个简单的Ftp客户端文件上传/下载操作示例. 上传文件 QNetworkAccessManager manager; QUrl url; /* 设置通讯协议 */ url.setScheme(&qu ...

  3. 每天一个linux命令(文件上传下载文件操作):【转载】用SecureCRT来上传和下载文件...

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...

  4. C# FTP上传和下载文件操作

    目录 1.初始化FTP 2.上传文件 3.下载文件 4.代码描述    我们使用C# 需要通过FTP访问服务器时,那么上位机就要作为客户端,通过连接FTP服务来上传下载文件.这里用实际代码和简要的文字 ...

  5. linux上传文件操作,每天一个linux命令(文件上传下载文件操作):【转载】gzip命令(示例代码)...

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...

  6. mac 下配置连接Linux服务器方法,上传下载文件操作

    1.先按照文档在本地生成SSHkey 2.mac输入 sudo -i 进入超级管理员#模式下,然后 创建用户 #useradd XXXadmin #passwd XXXadmin XXXadmin用户 ...

  7. C++简单的下载文件操作的封装

    头文件 #include "targetver.h"#include <stdio.h> #include <tchar.h>// #include < ...

  8. 大数据之_Hadoop工作笔记002---SpringBoot连接Hadoop HDFS进行创建文件夹,添加上传文件,删除文件,下载文件操作

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 首先,把环境搭好,至今我只搭了非集群的.看另一篇博文, idea开发 1.创建工程,选择:WEB,把web勾上,选择sq ...

  9. linux lftp下载目录,linux中使用lftp上传下载文件

    lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp ...

最新文章

  1. C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。
  2. java请求怎么获取token,如何获取变量token的值
  3. springboot启动流程
  4. vmware虚拟机不识别usb设备
  5. HBase 的存储结构
  6. 【jQuery系列之插件】jQuery插件---exselect实现联动
  7. 美国防部DARPA发起地下空间挑战赛提供3百万美元巨奖
  8. 【openjudge】 CDQZ challenge 4
  9. 深入理解Java String 池概念(String pool concept)
  10. FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别
  11. 常用的银行卡验证API接口——银行卡三元素API接口
  12. Windows磁盘清理工具
  13. MaxProxy可以成为永久关闭的911S5代理的新选择吗?
  14. 易语言程序假死优化_易语言假死无响应采用处理事件解决办法
  15. 浩鲸科技是外包公司吗_软件外包公司开发软件可靠吗
  16. 二级管/三极管门电路原理
  17. C语言 数组中插入一个数
  18. PC端播放RTMP流(手机端无法播放)
  19. 点击苹果模拟器触发事件
  20. XAMPP安装配置教程(Windows)

热门文章

  1. Bulma - 免费开源的纯 CSS 前端 UI 框架,专注于构建移动优先的响应式 web 界面
  2. 基于R+Oracle的海洋浮标数据显示系统(二)——网络爬虫程序和自动导入
  3. 仿凡科网站右侧悬浮窗 在线客服简约图标大全快捷导航钻芒美化版
  4. 不同路由器不同局域网共享打印机
  5. dota迷最雷人语录
  6. 小米路由器4A千兆版更换5G芯片和硬件布局后出现的刷机问题
  7. 【学习总结】在重庆北大青鸟能让我看到希望和学习的动力!
  8. 网络变压器POE供电的实现方法(示意图)
  9. 使用百度API实现实时公交线路查询及地图显示
  10. 877131-21-0,4-溴-2-乙基苯甲醇,(4-bromo-2-ethylphenyl)methanol的化学表征