Flutter:无法加载资产文件“car.png”

Posted

技术标签:

【中文标题】Flutter:无法加载资产文件“car.png”【英文标题】:Flutter: Unable to load asset file 'car.png' 【发布时间】:2021-10-01 13:32:06 【问题描述】:

我已将我的资产文件添加到我的项目根目录中,其中包含图像、字体和声音。

在 pubspec.yml 文件中添加资产,如下所示:

flutter:

  uses-material-design: true

  assets:
    - assets/images/

然后我尝试通过 Image.asset 添加图像,如下面的代码:

Scaffold(
      appBar: AppBar(
        leading: Align(
          alignment: Alignment.centerRight,
          child: Text(
            "Uber",
            style: TextStyle(
              fontSize: 22.0,
              fontWeight: FontWeight.w400
            ),
          )
        ),
      ),
      body: Column(
        children: [
          Text(
            "riyad", 
            style: TextStyle(color: Colors.black),
          ),
          Image.asset("car_android.png") <-- this like 
        ],
      ),
    );

但它显示了无法加载资产的异常:

在解析图像编解码器时引发了以下断言: 无法加载资产:car_android.png"

我的回溯异常:

════════ Exception caught by image resource service ════════════════════════════
The following assertion was thrown resolving an image codec:
Unable to load asset: car_android.png

When the exception was thrown, this was the stack
#0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:224:7)
<asynchronous suspension>
#1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:672:14)
<asynchronous suspension>
Image provider: AssetImage(bundle: null, name: "car_android.png")
Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#243b1(), name: "car_android.png", scale: 1.0)

我尝试运行命令flutter clean命令来清理缓存,然后再次运行应用程序,但同样的问题再次出现,它无法加载资产。 我是 Flutter 新手,请提供描述性答案,并建议我阅读一些博客

【问题讨论】:

尝试在一行中添加每个资产,就像这样assets/images/taxi.png 同意@veneno 并且确保终止应用程序并运行而不是热重载。如果最近包含资产。 热重启就可以了。 我在 pubspec.yml 中添加了指向资产的路径,例如“assets/images/”....不应该将其视为相对路径吗?并使用 Image.asset("car_android.png") 添加图像将被视为 Image.asset("assets/images/car_android.png")...?? 【参考方案1】:

有两个问题会导致这个问题:

    您应该停止您的项目并在没有任何HOT RELOAD 的情况下再次运行它 你应该添加图片的完整目录 -> assets/images/YOUR_IMAGE.png

【讨论】:

【参考方案2】:

您遇到的问题是因为您在创建 Image 对象时没有提供资产的完整路径。

 body: Column(
    children: [
      Text(
        "riyad", 
        style: TextStyle(color: Colors.black),
      ),
      Image.asset("assets/images/car_android.png") <-- this like 
    ],
  ),

【讨论】:

【参考方案3】:

指定图片路径如下

Image.asset("assets/images/car_android.png")

Image(image: AssetImage("assets/images/car_android.png"))

问题是 Flutter 无法识别您的图像的确切存储位置。

如果问题仍然存在,请尝试执行 HOT RESTART 这将解决您的问题。

如果您更新 pubspec.yaml 文件,如果您的 IDE 没有自动更新,则运行 flutter pub get 来更新库。

【讨论】:

【参考方案4】:

只是进一步推动 Harshil Khamar 的回答,这是正确且有效的另一个考虑因素。 如果您在它们之间放置另一个条目,那么 pubspec.yaml 中的资产必须处于抖动状态,那么它不知道资产文件夹在哪里。这听起来可能很愚蠢,但我确信我不是唯一一个这样做的人。

flutter:
  uses-material-design: true
  generate: true
flutter_intl:
  enabled: true

  assets:
    - assets/images/<<imagename>>

flutter_intl 阻碍了资产现在认为它们在flutter_intl 之下并且不会颤动。如果我是唯一的白痴,那好吧。

flutter_intl:
  enabled: true

flutter:
  uses-material-design: true
  generate: true

  assets:
    - assets/images/<<imagename>>

这样就解决了问题

【讨论】:

以上是关于Flutter:无法加载资产文件“car.png”的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:未处理的异常:无法加载资产

Flutter 无法在物理设备上加载图像资产(但在模拟器上加载它就好了)

Flutter web 无法从包中加载资产

Flutter web:一些png资产未加载(404)状态

如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?

如何将 JSON 资产加载到 Flutter 应用程序中?