Flutter 包读取自己的资产

eim*_*mer 5 assets dart flutter

我有一个带有“assets”文件夹的模块,该文件夹与我的 pubspec.yaml 文件位于同一目录中。在我的资产文件夹中,我有 test.txt 和 simpleObject.json。

flutter:
  assets:
    - assets/test.txt
    - assets/simpleObject.json
Run Code Online (Sandbox Code Playgroud)

我相信以下代码应该允许我将其读入我的应用程序。

var test = await DefaultAssetBundle.of(context).loadString("assets/test.txt");
Run Code Online (Sandbox Code Playgroud)

可悲的是,我收到以下错误:

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:无法加载资产:assets/test.txt

错误来自于 asset_bundle.dart。我必须假设这是我的错,但根据我读过的所有内容,我做对了。有什么想法吗?

如果有帮助,这是我的文件结构。

MyModule
    |_assets/test.txt
    |_lib/
    |_pubspec.yaml
Run Code Online (Sandbox Code Playgroud)

Dom*_*rga 6

这有点晚了,但另一种解决方案可以是:

Image.asset('packages/<package_name>/assets/splash.png'); 
Run Code Online (Sandbox Code Playgroud)


eim*_*mer 5

我得到了解决方案。即使我的包试图加载自己的资产,它仍然必须将自己指定为位置。

下面是 my_package 如何加载图像资产(指定包),在小部件中使用它,并且该小部件很容易被外部应用程序使用。

Image.asset(AssetImage("assets/splash.png").assetName, package: 'my_package',);
Run Code Online (Sandbox Code Playgroud)

  • 另一个解决方案可以是: Image.asset('packages/&lt;package_name&gt;/assets/splash.png'); (3认同)