首页 > 解决方案 > 寻找一个很好的示例工作代码,用于从 Flutter 中的 URL 下载任何文件。如果它带有本机下载器,那么这将非常好

问题描述

寻找一个很好的示例工作代码,用于从 Flutter 中的 URL 下载任何文件。如果它带有本机下载器,那么这将非常好。请帮助我提供代码示例,以在 Flutter 中使用本机下载器下载任何文件。

我使用了几个库,但结果并不好。

标签: 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 种方法来解决同样的问题。

希望我已经回答了您的询问。


推荐阅读