4

Flutter 下载文件操作

 2 years ago
source link: https://segmentfault.com/a/1190000040902116
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Flutter 下载文件操作

https://medium.com/halkbank-m...

https://github.com/deremakif/...

今天我要写一篇关于 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();
});
  • 应用程序演示

示例项目的源代码。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK