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

Flutter本地图片加载失败求助:无法加载assets/images/pic.png

Flutter本地图片加载失败排查与解决

问题描述

我在Flutter项目中尝试加载本地图片,但始终失败,报错提示无法加载指定资源。

项目文件结构

项目文件结构1
项目文件结构2

相关代码

import 'package:flutter/material.dart';

class Dashboard extends StatelessWidget {
  const Dashboard({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return  Scaffold(
      body: SingleChildScrollView(
        child: SafeArea(
          child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.symmetric(vertical: 30.0, horizontal: 40),
                child: Row(
                  children: [
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: const [
                        Text('Hi Emma', style:TextStyle(fontSize: 30),),
                        Text('Welcome back', style: TextStyle(fontSize: 40),),
                      ],
                    ),
                  ],
                ),
              ),
              Image.asset('assets/images/pic.png')
            ],
          ),
        ),
      ),
    );
  }
}

报错信息

正在iPhone 14 Pro Max的调试模式下启动lib/main.dart...
正在运行Xcode构建...
Xcode构建完成。                                           16.7s
调试服务监听地址:ws://127.0.0.1:64299/4VQyTtoPAoU=/ws
正在向iPhone 14 Pro Max同步文件...

======== 图片资源服务捕获到异常 ================================================
解析图片编解码器时抛出以下断言:
无法加载资源:assets/images/pic.png。

抛出异常时的调用栈:
#0      PlatformAssetBundle.loadBuffer (package:flutter/src/services/asset_bundle.dart:288:7)
#1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:731:35)
#2      AssetBundleImageProvider.loadBuffer (package:flutter/src/painting/image_provider.dart:695:14)
#3      ImageProvider.resolveStreamForKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:513:13)
#4      ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:384:22)
#5      ImageProvider.resolveStreamForKey (package:flutter/src/painting/image_provider.dart:511:81)
#6      ScrollAwareImageProvider.resolveStreamForKey (package:flutter/src/widgets/scroll_aware_image_provider.dart:106:19)
#7      ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:358:9)
#8      ImageProvider._createErrorHandlerAndKey.<anonymous closure> (package:flutter/src/painting/image_provider.dart:473:24)
<异步挂起>
图片提供者:AssetImage(bundle: null, name: "assets/images/pic.png")
图片密钥:AssetBundleImageKey(bundle: PlatformAssetBundle#9da8b(), name: "assets/images/pic.png", scale: 1.0)
====================================================================================================

排查解决步骤

  1. 检查pubspec.yaml资源配置
    这是最常见的问题根源,确保在pubspec.yaml中正确声明资源路径:

    flutter:
      assets:
        - assets/images/
    

    注意:

    • 缩进必须用空格(不能用Tab),assets:需与flutter:保持正确层级
    • 若声明整个文件夹,末尾需加斜杠;单个文件直接写完整路径
  2. 验证图片路径与文件名

    • 确认图片确实存在于assets/images/目录下,文件名完全匹配(iOS系统对大小写敏感)
    • 避免文件名包含特殊字符或空格,建议用小写字母+下划线命名
  3. 清理缓存并重启项目

    • 执行命令:flutter clean清理项目缓存
    • 关闭当前模拟器/真机,重新运行flutter run
  4. iOS端Xcode资源检查

    • 打开iOS项目(ios/Runner.xcworkspace)
    • 确认Assets.xcassets中已添加目标图片,或Copy Bundle Resources列表包含你的图片文件夹
  5. 测试路径写法
    尝试调整路径写法验证:

    Image.asset('assets/images/pic.png')
    // 或显式指定package(无自定义package时传null)
    Image.asset('assets/images/pic.png', package: null)
    

内容的提问来源于stack exchange,提问作者Cesar Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:10:28