从颤振资产加载 .pdf 文件/自定义文件

Posted

技术标签:

【中文标题】从颤振资产加载 .pdf 文件/自定义文件【英文标题】:Load .pdf file / custom file from flutter assets 【发布时间】:2019-06-22 23:16:42 【问题描述】:

我的问题是,在部署 flutter app 时,是否有办法在 assets 等应用资源中加载 .pdf 文件?我想用这个来显示一个 PDF 文件:

https://pub.dartlang.org/packages/flutter_full_pdf_viewer

但没有从互联网加载;)

【问题讨论】:

【参考方案1】:

将资产复制到临时文件。

  Future<File> copyAsset() async 
    Directory tempDir = await getTemporaryDirectory();
    String tempPath = tempDir.path;
    File tempFile = File('$tempPath/copy.pdf');
    ByteData bd = await rootBundle.load('assets/asset.pdf');
    await tempFile.writeAsBytes(bd.buffer.asUint8List(), flush: true);
    return tempFile;
  

【讨论】:

对于那些想知道 getTemporaryDirectory() 来自哪里的人,您需要获取一个库:pub.dartlang.org/packages/path_provider @HajoLemcke 浏览器无法写入本地机器——甚至是临时文件夹。如果您尝试在浏览器中打开 PDF,您可以从服务器(您正在为您的 Flutter Web 应用程序提供服务的地方)提供该 PDF,并使用 url_launcher 打开一个包含 PDF 的新窗口。 对不起。我的意思是任何不是 pdf 文件的文件。我可以放一个文件,例如进入 /lib/assets/config.json 并且只想加载它。这在网络中是否应该是可能的? @HajoLemcke 它可以正常工作(但不要放在lib 中)。将其放入 assets/config.json,添加到 pubspec.yaml,然后使用,例如,rootBundle.loadString('assets/config.json').then(print); 如果这不起作用,请提出新问题并随时在此处标记。 @Richard 感谢您的提示。这行得通。我现在将尝试在一个包中使用它。

以上是关于从颤振资产加载 .pdf 文件/自定义文件的主要内容,如果未能解决你的问题,请参考以下文章

OSMDroid 从资产文件夹加载自定义离线图块

使用 SpriteKit 的自定义框架 - 未加载资产文件

从应用程序特定文件夹加载自定义字体文件

如何在 Vue-CLI 3 中将预取和预加载资源插入到我的自定义 HTML 文件中?

从 grails 应用程序中的自定义 groovy 文件加载 spring bean

从 XIB 文件中为 ViewController 视图加载自定义 UIView