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

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

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

但没有从互联网加载;)

【问题讨论】:

    标签: flutter


    【解决方案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 感谢您的提示。这行得通。我现在将尝试在一个包中使用它。
    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2021-01-08
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多