You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter自定义包图片资源加载失败(Unable to load asset)求助

解决Flutter自定义包中图片资源无法加载的问题

你的问题核心是没有指定图片所属的自定义包,Flutter默认会从主项目的资源bundle中查找图片,而自定义包的资源需要明确指定package参数才能访问。以下是具体解决步骤:

1. 修改自定义包内图片引用代码

在showimage.dart中,给Image.asset添加package参数,指定包名showimage:

/* showimage.dart */
library showimage;

import 'package:flutter/material.dart';

class ShowImage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        margin: const EdgeInsets.fromLTRB(0, 100, 0, 0),
        child: Center(
          child: SizedBox(
            width: 200,
            // 添加package参数指定资源所属的包
            child: Image.asset('assets/images/photo.jpg', package: 'showimage')
          ),
        )
      )
    );
  }
}

2. 规范自定义包的pubspec.yaml资源配置

虽然你的配置本身没问题,但可以去掉路径开头的./,保持路径写法规范(路径是相对于自定义包根目录的):

# pubspec.yaml (自定义包内的配置)
name: showimage
description: Displays a photo on the screen.
version: 1.0.0
publish_to: 'none'

environment:
  sdk: '>=2.17.6 <3.0.0'

dependencies: {flutter: {sdk: flutter}}

flutter:
  uses-material-design: true
  assets:
    - assets/images/  # 去掉开头的./

3. 重新构建项目

执行以下命令清理缓存并重新获取依赖,确保资源被正确打包:

flutter clean
flutter pub get

之后重新运行项目即可正常显示图片。

原理说明

Flutter在打包时,会将主项目和依赖包的资源分别管理,依赖包的资源会被标记上所属的包名。当使用Image.asset时,如果不指定package参数,Flutter会默认从主项目的资源bundle中查找,自然找不到自定义包内的图片;添加package参数后,Flutter会定位到对应包的资源目录中加载图片。

内容的提问来源于stack exchange,提问作者Mark Tyers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:15:36