【问题标题】:Can't load an image from a library in Flutter无法从 Flutter 中的库中加载图像
【发布时间】:2023-03-17 19:47:01
【问题描述】:

我需要一个库来加载位于主应用程序资产目录中的 SVG(使用 flutter_svg 包)。现在我在库函数中有以下代码:

SvgPicture.asset(svgSrc, package: 'example_app')

其中 svgSrc 将是“assets/images/logo.svg”。

但是在颤振运行时我得到以下异常:

Error while trying to load an asset: Failed to load asset at "assets/packages/example_app/assets/images/logo.svg" (404)
══╡ EXCEPTION CAUGHT BY SVG ╞═══════════════════════════════════════════════════════════════════════
The following assertion was thrown resolving a single-frame picture stream:
Unable to load asset: packages/example_app/assets/images/logo.svg

我已经添加了主应用程序的 pubspec.yaml:

assets:
  - assets/images/

我哪里错了?

【问题讨论】:

  • 确保在 pubspec.yaml 中 assets: 键位于 flutter: 键下方
  • 谢谢,但是我的缩进是错误的。即使在更正之后,我仍然会遇到同样的异常。
  • 然后确保该文件实际位于此目录中packages/example_app/assets/images/logo.svg 曾经发生在我的资产文件夹中有一个资产文件夹,因此路径错误。
  • 我已验证该文件在相对路径中,但“packages”作为 example_app 的父目录不存在。库和应用程序是否必须共享一个包父目录?
  • assets: 键下提供的路径似乎与您的应用根目录相关。我个人将资产文件夹放在项目根目录中的 lib、build、... 文件夹旁边。

标签: flutter


【解决方案1】:

Here is an example 展示如何通过自定义包共享图像。

回答 Jason 的评论:这只是路径问题。您可以轻松地将packages 移动到任何位置,直到您可以在您的pubspec.yaml 中找到它们 f.e.将其移动到一个目录并相应地更改pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  flutter_svg: ^0.22.0
  images:
    path: ../packages/images/
  another_package:
    path: ../packages/another_package/

【讨论】:

  • 在您的示例中,包被直接复制到主应用程序。如果这是让它工作的唯一方法,那么你是对的。
猜你喜欢
  • 2020-06-16
  • 2021-03-09
  • 2016-10-12
  • 2021-01-31
  • 2021-01-10
  • 2018-06-15
  • 2021-01-17
  • 2012-07-10
  • 2013-08-03
相关资源
最近更新 更多