当前位置: 首页 > 知识库问答 >
问题:

错误:无法加载资源

邰伟彦
2023-03-14

这是我的应用程序的文件夹结构

.idea
.vscode
android
build
fonts
 Oxygen-Bold.tff
 Oxygen-Light.tff
 Oxygen-Regular.tff
images
 pizza0.png
 pizza1.png
ios
lib
 ui
  home.dart
 main.dart
test
.gitignore
.metadata
.packages
app_widgets.iml
pubspec.lock
pubspec.yaml
README.md

在我的pubspec中。yaml文件,我像这样加载字体和资源

flutter:

uses-material-design: true

assets:
  - images/pizza0.png
  - images/pizza1.png

fonts:
  - family: Oxygen
    fonts:
      - asset: fonts/Oxygen-Regular.ttf
      - asset: fonts/Oxygen-Bold.ttf
        weight: 700
      - asset: fonts/Oxygen-Light.ttf
        weight: 300

对于这个pubspec,我没有收到任何错误。yaml,运行flatterpackagesget将给出退出代码0。

在我家。dart我有以下课程:

class PizzaImageWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    AssetImage pizzaAsset = AssetImage('images/pizza0.png');
    Image image = Image(image: pizzaAsset, width: 400, height: 400);
    return Container(
      child: image,
    );
  }
}

我在其他地方使用,以显示图像(代码省略):

        ),
        PizzaImageWidget(),
      ],

这座大楼没有错误。颤振博士-v没有给出任何错误,颤振分析-v也没有给出任何错误。apk似乎构建得很好,但当应用程序在我的手机上打开时,我在asset_bundle中发现以下错误。投掷:

发生异常。错误(无法加载资源:images/pizza0.png)

该错误由资产包中的此类引发。dart文件:

/// An [AssetBundle] that loads resources using platform messages.
class PlatformAssetBundle extends CachingAssetBundle {
  @override
  Future<ByteData> load(String key) async {
    final Uint8List encoded = utf8.encoder.convert(Uri(path: Uri.encodeFull(key)).path);
    final ByteData asset =
        await BinaryMessages.send('flutter/assets', encoded.buffer.asByteData());
    if (asset == null)
      throw FlutterError('Unable to load asset: $key');
    return asset;
  }
}

这两种情况都适用于比萨饼。png文件以及pizza1。png文件。这些文件在树结构中可见,无论是在Windows资源管理器中还是在VS代码中。字体资源加载时不会出现问题。

这是运行颤振运行-v时得到的输出:

[1068 ms]I/flutter(6489): ══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════ [ 9 ms]I/flutter(6489):以下断言被抛出解决图像编解码器:[2 ms]I/flutter(6489):无法加载资产:图像/pizza0.png[2 ms]I/flutter(6489):[1 ms]I/flutter(6489):当异常被抛出,这是堆栈:[2 ms]I/flutter(6489):#0 PlatformAssetBundle.load(包:flutter/src/service/asset_bundle.dart:221: 7)[1 ms]I/flutter(6489):[1 ms]I/flutter_loadAsync(软件包:flutter/src/绘画/image_provider.dart:429: 44)[1 ms]I/flutter(6489):[1 ms]I/flutter(6489):#2 AssetBundleImageProvider.load(软件包:flutter/src/绘画/image_provider.dart:414: 14)[1 ms]I/flutter(6489):#3 ImageProvider.resolve..(软件包:flutter/src/绘画/image_provider.dart:267: 86)[4 ms]I/flutter(6489):#4 ImageCache.put如果缺席(软件包:flutter/src/绘画/image_cache.dart:143: 20)[3 ms]I/flutter(6489):#5 ImageProvider.resolve.(包:flutter/src/画/image_provider.dart:267: 63)[3 ms]I/flutter(6489):(省略8帧从包飞镖:异步)[1 ms]I/flutter(6489):[1 ms]I/flutter(6489):图像提供程序:AssetImage(bundle:null,名称:图像/pizza0.png)[3 ms]I/flutter(6489):Image key:AssetBundleImageKey(bundle:PlatformAssetBundle#20fc8(),名称:图像/pizza0.png,[1 ms]I/flutter(6489):比例:1.0)[2 ms]I/flutter(6489): ════════════════════════════════════════════════════════════════════════════════════════════════════

共有3个答案

秦滨海
2023-03-14

最简单的方法是引用assest文件夹,而不是资产本身,只要确保使用适当的缩进作为pubspec即可。yaml对缩进敏感。

flutter:

  uses-material-design: true
  assets:
    - images/

您只需访问每个图像即可

  new Image.asset('images/pizza1.png',width:300,height:100)
乔宏峻
2023-03-14

我也有同样的问题。我刚刚运行了“$flatterclean”,然后一切都正常了。

有关此错误的更多信息

昝光临
2023-03-14

您应该考虑<代码>资产的缩进。

flutter:

  assets:
    - images/pizza1.png
    - images/pizza0.png

更多详情:

flutter:

[2 whitespaces or 1 tab]assets:
[4 whitespaces or 2 tabs]- images/pizza1.png
[4 whitespaces or 2 tabs]- images/pizza0.png
 类似资料:
  • 这个问题被问了很多!!!我已经通过了所有的建议,我将在下面列出,但仍然没有去。需要帮助。 ========问题:SVG文件不会使用Flutter包加载:flutter_svg/flutter_svg.dart。 =======配置段: 最后一个字符串myimage1str='images/splashtest.svg';最后一个小部件myimage1=SVGPicture.Asset('MyIma

  • 我的'pubspec.yaml'文件: 我正在使用以下代码将图像加载到页面中:在“登录page.dart”文件中:

  • 以下是错误按摩: 无法加载Asset:Assets/Images/Waiting.png当引发异常时,这是堆栈图像提供程序:AssetImage(bundle:null,name:“Assets/Images/Waiting.png”)图像键:AssetBundleImageKey(bundle:PlatformAssetBundle#e3e67(),name:“Assets/Images/Wai

  • 问题内容: 我已刷新我的应用程序页面,并在控制台中收到此错误 。 我试图重新安装XAMPP版本,但这对我不起作用。 问题答案: 我认为您正在使用Chrome。问题是证书不匹配或证书过期。请正确检查证书。

  • 问题内容: 我一直有一些奇怪的问题。主要的问题是,在尝试将WSDL添加到新项目时,我始终收到以下错误: 这是error.log文件中记录的消息: 我验证了该URL上的应用程序已启动并正在运行,并且可以从Web浏览器访问WSDL,但是无论如何我始终会收到此错误消息。我在Windows 7机器上使用SoapUI 4.5.0(32位)。我也尝试了64位版本,但结果相同。无论我是否使用VPN,都会发生这种

  • 所以我尝试使用FXML登录示例的示例,只是我给出了FXML的其他方法。在fxml文件中,我给出了控制器的方法。 登录控制器类 第28行是: 我提到fxml文件在另一个文件夹中,即主文件文件夹。我不明白为什么在使用Oracle给出的示例时会出现这个错误,但使用的是另一个文件夹结构! 我的应用程序文件夹结构: 主 模型 安全性 skinfolder-CSS skinfolder-fxml skinfo