从颤振资产加载 .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 文件/自定义文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vue-CLI 3 中将预取和预加载资源插入到我的自定义 HTML 文件中?