如何在 flutter Package/Plugin 开发中添加资产?

Sha*_*ram 8 assets dart flutter flutter-plugin flutter-packages

我正在开发一个包含一些资产文件的颤振包。我像往常一样在 pubsepc.yaml 中提到了所需的资产

  assets:
    - assets/abc.xyz
Run Code Online (Sandbox Code Playgroud)

并将包上传到https://pub.dartlang.org/

之后,我创建了一个 flutter 应用程序并导入了我开发的包,pubspec.yaml例如......

dependencies:
  flutter:
    sdk: flutter
  my_developed_package: ^0.0.1
Run Code Online (Sandbox Code Playgroud)

现在一切正常,除了我的资产不存在。我在我的应用程序中放入了一些资产而没有提及pubsepc.yaml它的工作原理。我无法理解,如何将这些资产添加到我的包中以便它们自动加载?

sal*_*ler 11

报价

如果在包的 pubspec.yaml 文件中指定了所需的资产,它会自动与应用程序捆绑在一起。特别是,包本身使用的资产必须在其 pubspec.yaml 中指定。

在 Flutter 中,您可以使用包中的资产,这应该不是问题。唯一的问题是,您需要指定您的包并导入它。例如,如果它是一个图像,你可以使用AssetImage类和它的package属性。

AssetImage('assets/abc.xyz', package: 'my_developed_package');
Run Code Online (Sandbox Code Playgroud)

有关如何拨打短信和其他内容的更多信息,请查看此处


Sha*_*ram 8

抱歉回答晚了,但以下方法帮助我在插件开发中包含资产(不仅是图像,还包括任何类型的文件)。

我把我的资产放在lib文件夹下my_plugin/lib/assetspubspec.yaml就像这样。

  assets:
    - packages/my_plugin/assets/asset_name
       
  # Be careful about indentation
Run Code Online (Sandbox Code Playgroud)

它已与插件一起添加,然后我使用这样的路径访问它们 packages/my_plugin/assets/asset_name,例如

File myAsset = File("packages/my_plugin/assets/asset_name");
Run Code Online (Sandbox Code Playgroud)

通过这种方法,我能够从插件中获取任何资产,而不仅仅是图像。

对于完整的示例,您可以在此处查看我的插件。

  • 这是一个胜利者,谢谢!我花了整个早上试图让我的包加载它自己的 JSON 文件,并发现 flutter 文档有点......不清楚。 (2认同)