flutter - 寻找一个很好的示例工作代码,用于从 Flutter 中的 URL 下载任何文件。如果它带有本机下载器,那么这将非常好
问题描述
寻找一个很好的示例工作代码,用于从 Flutter 中的 URL 下载任何文件。如果它带有本机下载器,那么这将非常好。请帮助我提供代码示例,以在 Flutter 中使用本机下载器下载任何文件。
我使用了几个库,但结果并不好。
解决方案
对于移动设备,我使用该http
包将文件下载到应用程序文档目录
首先,创建一个httpClient对象
static var httpClient = new HttpClient();
然后你可以创建一个这样的函数来下载文件:
Future<void> _downloadFile({
required String fileName,
}) async {
String url = ...;
var request = await httpClient.getUrl(Uri.parse(url));
var response = await request.close();
var bytes = await consolidateHttpClientResponseBytes(response);
String dir = (await getApplicationDocumentsDirectory())!.path;
File file = new File('$dir/$fileName'); // Note: Filename must contain the extension of the file too, like pdf, jpg etc.
await file.writeAsBytes(bytes);
}
对于 Flutter Web 应用程序,我觉得这个url_launcher
包是最容易使用的。
_launchURL() async {
String url = ...;
if (await canLaunch(url)) {
await launch(url);
print('URL Launcher success');
} else {
throw Exception('Could not launch $url');
}
}
url_launcher 包代码甚至适用于移动设备,但它会打开一个新的浏览器窗口来下载所需的文件,这不是一个好的用户体验,所以我使用了 2 种方法来解决同样的问题。
希望我已经回答了您的询问。
推荐阅读
- r - 根据包含表中未找到的值的优先级顺序的向量对数据框行进行排序
- python - Selenium:元素无法滚动到视图中
- ruby - 将圆角矩形插入 Prawn 表格单元格红宝石
- java - 如何按行来回填充二维数组
- azure-devops - 如何在 Azure Pipelines yaml 中显示宏 ($(var)) 的值?
- vue.js - 为什么我的网站在 vuejs axios 中检索后返回 2 个空格
- python - 如何搜索 OpenStack 用户不区分大小写?
- python-3.x - 使用 python requests 库时,是否有某种方法可以加快请求和/或 timrout 错误?
- go - 在 go 中创建 grpc 服务器流端点时客户端流协议冲突
- ruby-on-rails - 使用除非 current_page 时遇到问题?隐藏按钮