在本机应用程序中打开本地本地资产(PDF)

时间:2018-07-24 04:41:01

标签: dart flutter

我试图将我的应用程序与PDF捆绑在一起,并让用户在本机查看器中打开它。

我尝试过:

  • 将PDF的数据复制到“临时目录”或“文档目录”(来自path_provider),然后从那里打开
  • 要打开,我正在使用“ url_launcher”打开文件。我尝试使用两个文件://... urls,只是传递本地路径,即/.../

文件确实存在,这似乎是一个权限问题,两个平台上两个位置的文件都在应用的沙箱中。

该文件确实存在,我可以从Web URL打开PDF。

这是扑扑能做的事吗?

1 个答案:

答案 0 :(得分:0)

我不太确定这是否仍然是您的问题。但是,由于我想知道同一件事,所以我试图弄清楚。这是我的结果,但我不得不提一下,我将文件存储在下载文件夹中:

  1. 安装url_launchersimple_permissions
  2. 将以下几行添加到您的AndroidManifest.xml和相应的iOS等效项中:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
  3. 用于创建pdf的代码:

    SimplePermissions.requestPermission(Permission.WriteExternalStorage);
    String dir = (await getExternalStorageDirectory()).path + "/download";
    String filename = "$dir/" + title;
    File f = new File(filename);
    f.writeAsBytesSync(data);
    
  4. 打开文件的代码

    var url = 'file://' + f.path;
    if (await canLaunch(url)) {
     await launch(url, forceSafariVC: false, forceWebView: false);
    } else {
      throw 'Could not launch $url';
    }