无法从Flutter插件加载资源。

4

我正在开发一个Flutter插件,但是在使用插件时出现了“无法加载资源”错误。我在使用插件时需要做些特殊的事情吗?

我在主应用程序中加载图片没有问题。

从pubspec.yaml文件中:

flutter:
  # To add assets to your plugin package, add an assets section, like this:
  assets:
   - icons/
   - icons/myimage.png # << Just to show, that this also is not not working
  uses-material-design: true
  plugin:
  ...

也尝试过:
- 使用 TAB 等来前后移动。
- 将文件夹重命名为 assets。

使用图像文件夹 asset:

Image.asset('icons/myimage.png', height: 12.0),

我收到了以下错误信息:
flutter: ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
flutter: The following assertion was thrown resolving an image codec:
flutter: Unable to load asset: icons/myimage.png
1个回答

7

要从非应用程序包中加载资源,您需要将package参数传递给加载资源的方法,例如:

Image.asset('icons/myimage.png', package: 'my_package', height: 12.0),

另请参阅docs.flutter.io/flutter/widgets/Image/Image.asset.html

要能够使用来自依赖项(插件或纯Dart包)的资源,请遵循https://flutter.dev/docs/development/ui/assets-and-images#bundling-of-package-assets

在依赖项中,所有文件都需要位于lib/内,因为只有这些文件对包用户可用。

pubspec.yaml中的资源路径需要以packages/package_name/some_folder_inside_lib开头。

flutter
  assets:
    - packages/my_package/some_folder_inside_lib/my_image.png

目前还存在一个限制,所有资产文件都需要在pubspec.yaml中单独列出,与应用程序项目的资产不同,仅列出文件夹即可。 点赞并订阅https://github.com/flutter/flutter/issues/22944以获取更新通知。

如果该资产仅被插件内的小部件使用呢? - Chris G.
1
我明白了。我还没有尝试过那个。你至少需要传递 package: 'my_package' 参数 https://docs.flutter.io/flutter/widgets/Image/Image.asset.html Image.asset('icons/myimage.png', package: 'my_package', height: 12.0), - Günter Zöchbauer
谢谢,将包名添加到Image.asset中就解决了问题。为了保持整洁,如果您愿意,可以复制粘贴您所做的注释 - 然后我可以将其解决为缺少的包名?再次感谢Günter。 - Chris G.
如果我们需要在应用程序的yaml文件中指定资产,那么创建单独的包有什么意义呢? - undefined
@Bawantha 当你想将它们作为一个包或作为另一个包的一部分进行分发时。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接