【问题标题】:Error: unable to find directory entry in pubspec.yaml错误:无法在 pubspec.yaml 中找到目录条目
【发布时间】:2021-04-22 04:29:37
【问题描述】:

我正在尝试在我的颤振应用程序中添加来自外部包的资产 如此处所述:https://flutter.dev/docs/development/ui/assets-and-images#bundling-of-package-assets

我得到了这个Error: unable to find directory entry in pubspec.yaml /project/location/<project_name>/packages,即使添加了这个不能为空的简单条目。

  assets:
    - packages/

【问题讨论】:

  • 你能换一个目录名吗? packages 保留在较旧的 Dart 版本中。可能存在尚未完全删除的错误。
  • 实际上我在 pubspec.yaml 中添加了外部包,它的 lib/ 目录中有资产。我如何访问这些资产??

标签: flutter


【解决方案1】:

https://flutter.dev/docs/development/ui/assets-and-images#asset-images-in-package-dependencies 解释如何从依赖项中添加资产

  assets:
    - packages/some_package/backgrounds/background1.png

将从包some_package 中添加资产lib/backgrounds/background1.png

包中的资产尚不支持添加整个目录,您需要单独添加每个资产文件(但会自动识别来自解析子目录的文件)

添加资产目录也不支持从应用程序包添加目录树。仅识别列出目录下的所有文件(同样包括解析子目录)

【讨论】:

  • 谢谢一切正常,你想用一个例子来解释一下“(虽然分辨率子目录中的文件会被自动识别)”,什么是分辨率子目录?
  • 它在flutter.dev/docs/development/ui/assets-and-images 中被命名为分辨率感知图像资产(我的意思是2.0x3.0x 等目录)
  • 好的,我可以从另一个文件加载资产名称吗?任何文本文件,因为我必须从非解析子目录中添加近 5000 个名称,并且我不想在我的 pubpec.yaml 中添加所有名称
  • 目前据我所知。检查有关相关功能请求的 GitHub 问题。最好为此使用一些数据库(键值存储)并将所有内容放入其中以获取单个资产文件,然后在您的应用程序中从该文件中读取。您可能需要在首次加载应用程序时将资产复制到普通文件中,以便能够将其作为文件访问(使用 dart:io/File
【解决方案2】:

我通过以下方式解决了我的问题:

  1. 将 assets 文件夹移出 lib 文件夹,即到根文件夹。
  2. 重新启动我的编辑器
  3. 将 assets 文件夹移回 lib 文件夹。

【讨论】:

    【解决方案3】:

    如果您 100% 确定 pubspec.yaml 是正确的(资产 2 个空格,子文件夹 4 个空格:
    --- 如果不确定,则复制到此行下方以获得正确的缩进 ---

      资产:
    -图像/
    -资产/

    然后看看项目树,我从旧项目中复制了资产和图像文件夹,并且错误地将它们设置在项目树上的错误位置(简单的拖放可以解决此问题case) 后跟一个新的包获取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2022-01-27
      • 1970-01-01
      • 2018-11-01
      • 2017-12-28
      • 2015-04-05
      相关资源
      最近更新 更多