首页 > 解决方案 > 无法从 Flutter 插件顶部加载资产

问题描述

我正在开发一个颤振插件,使用该插件时Unable to load asset出现错误。使用插件时我必须做一些特别的事情吗?

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

来自 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

使用图像文件夹资产:

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

标签: flutter

解决方案


要从非应用程序包中加载资产,您需要将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以获取有关更新的通知。


推荐阅读