Flutter:Release 版本中的 PathNotFoundException

问题描述 投票:0回答:1

我正在使用 Flutter 开发一个 Windows 应用程序,它会生成一个 pdf 文档。该软件使用 Dart/Flutter 库 pdf 3.10.7 来构建文档。我的目标是在 pdf 中使用自定义字体,因此我编写了库文档中所示的代码(网站上的示例代码“使用 TrueType 字体”):

final Uint8List fontData1 =
    File('assets/OpenSans-Regular.ttf').readAsBytesSync();
final openSansRegular = pw.Font.ttf(fontData1.buffer.asByteData());
final fontData2 = File('assets/OpenSans-Bold.ttf').readAsBytesSync();
final openSansBold = pw.Font.ttf(fontData2.buffer.asByteData());

这是我的

pubspec.yaml
文件:

assets:
    - assets/

我的字体是这样包含的:

我的软件在 Android Studio 的调试模式下运行没有任何错误。

但是,当我使用

flutter build windows
构建发布版本时,我在使用该应用程序时收到此错误:

PathNotFoundException: Cannot open file, path = 'assets/OpenSans-Bold.ttf' (OS Error: The System cannot find the path specified.
, errno = 3)
flutter dart pdf assets
1个回答
0
投票

如果您想访问您的资产,则需要使用

rootBundle
中的
flutter/services.dart

import 'package:flutter/services.dart' show rootBundle;

final ByteData fontData1 = await rootBundle.load('assets/OpenSans-Regular.ttf');

虽然您的方法可能在调试模式下有效,但您绝对应该使用

AssetBundle
来加载您的资源。另请注意,这会直接返回一个
ByteData
对象,因此不再需要从
Uint8List
进行转换。

有关如何添加资产的更多信息,请访问docs

© www.soinside.com 2019 - 2024. All rights reserved.