当前位置: 首页 > 知识库问答 >
问题:

文件下载器应用程序与包 sn 进度对话框

岳杜吟
2023-03-14

如何将progress_dialog包更改为sn_progress-dialog包?我正在尝试制作一个带有进度对话框的文件下载应用程序,但progress_dialog包不是空安全的。

  Future _downloadAndSaveFileToStorage(String urlPath) async {

    final name = urlPdf.split('/').last;

    ProgressDialog pr;
    pr = ProgressDialog(context, type: ProgressDialogType.Normal);
    pr.style(message: "Download file ...");

    try{
      await pr.show();
      final Directory _documentDir = Directory('/storage/emulated/0/MyDocuments/$name');
      await dio!.download(urlPath, _documentDir.path, onReceiveProgress: (rec, total){
        setState(() {
          _isLoading = true;
          progress = ((rec / total)*100).toStringAsFixed(0) + " %";
          print(progress);
          pr.update(message: "Please wait : $progress");
        });
      });
      pr.hide();
      _fileFullPath = _documentDir.path;
    } catch (e) {
      print(e);
    }

    setState(() {
      _isLoading = false;
    });

  }

这是我的屏幕截图应用程序,带有progress_dialog包。

共有2个答案

解明辉
2023-03-14

只需要一点点调整:

  Future _downloadAndSaveFileToStorage(String urlPath) async {

    final name = urlPdf.split('/').last;

    ProgressDialog pd = ProgressDialog(context: context);

    try{

      pd.show(
        max: 100,
        msg: 'Preparing Download...',
        progressType: ProgressType.valuable,
        backgroundColor: Color(0xff212121),
        progressValueColor: Color(0xff3550B4),
        progressBgColor: Colors.white70,
        msgColor: Colors.white,
        valueColor: Colors.white
      );

      final Directory _documentDir = Directory('/storage/emulated/0/MYDocuments/$name');
      await dio!.download(urlPath, _documentDir.path, onReceiveProgress: (rec, total){
        setState(() {
          _isLoading = true;
          int progress = (((rec / total) * 100).toInt());
          print(progress);
          pd.update(value: progress, msg: 'File Downloading');
        });
      });
       pd.close();
      _fileFullPath = _documentDir.path;
    } catch (e) {
      pd.close();
      print(e);
    }

    setState(() {
      _isLoading = false;
    });

  }
柴文林
2023-03-14

就这样做:

  Future _downloadAndSaveFileToStorage(String urlPath) async {

    final name = urlPdf.split('/').last;

    ProgressDialog pd = ProgressDialog(context: context);

    try{
      pd.show(max: 100, msg: 'Download file ...');

      final Directory _documentDir = Directory('/storage/emulated/0/MyDocuments/$name');
      await dio!.download(urlPath, _documentDir.path, onReceiveProgress: (rec, total){
        setState(() {
          _isLoading = true;
          progress = ((rec / total)*100).toStringAsFixed(0) + " %";
          print(progress);
          pd.update(progress);
        });
      });
       pd.close();
      _fileFullPath = _documentDir.path;
    } catch (e) {
      pd.close();
      print(e);
    }

    setState(() {
      _isLoading = false;
    });

  }

您可以在show方法中更改颜色或消息,如下所示:

pd.show(
    max: 100,
    msg: 'Preparing Download...',
    progressType: ProgressType.valuable,
    backgroundColor: Color(0xff212121),
    progressValueColor: Color(0xff3550B4),
    progressBgColor: Colors.white70,
    msgColor: Colors.white,
    valueColor: Colors.white);
 类似资料:
  • 我已经创建了一个webview,并向其中添加了下载监听器。当我在应用程序中下载文件时,它将文件存储在应用程序包中,而不是公共下载文件夹中。

  • 问题内容: 我已经在我的项目中实现了角度文件保护程序,目的是下载文件,它对于小文件也可以正常工作,但是对于大于50mb的文件,我会看到下一个错误,并且在35-50mb之后会停止下载。 我试图调查互联网上的这个问题,发现下载限制为500mb,因为显然不能在RAM中存储这么多的信息。不幸的是,我没有找到其他任何可以解决该问题的解释,然后我问了后端人员,我得到的答案是,一切都很好。 那我的问题在哪里呢?

  • 本文向大家介绍使用Perl引发“文件下载”对话框,包括了使用Perl引发“文件下载”对话框的使用技巧和注意事项,需要的朋友参考一下 有时,您希望提供一个选项,使用户单击链接,该链接将向用户弹出“文件下载”对话框,而不显示实际内容。这非常简单,可以使用Perl Script通过HTTP标头实现。 这个HTTP标头与上一节中提到的标头不同。例如,如果要使FileName 文件可从给定链接下载,则其语法

  • **我使用Flutter下载器包在完成下载一些文件后,我的应用程序会自动关闭并断开与Android Studio的连接。任何人都可以帮我找到溶剂。 以下是我的控制台错误:

  • 需要通过应用程序从web服务器下载文件,但该文件没有加载,下面是我使用的代码: 在清单中,我有以下权限:

  • 我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?