Flutter本地图片加载失败求助:无法加载assets/images/pic.png
Flutter本地图片加载失败排查与解决
问题描述
我在Flutter项目中尝试加载本地图片,但始终失败,报错提示无法加载指定资源。
项目文件结构


相关代码
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) ====================================================================================================
排查解决步骤
检查
pubspec.yaml资源配置
这是最常见的问题根源,确保在pubspec.yaml中正确声明资源路径:flutter: assets: - assets/images/注意:
- 缩进必须用空格(不能用Tab),
assets:需与flutter:保持正确层级 - 若声明整个文件夹,末尾需加斜杠;单个文件直接写完整路径
- 缩进必须用空格(不能用Tab),
验证图片路径与文件名
- 确认图片确实存在于
assets/images/目录下,文件名完全匹配(iOS系统对大小写敏感) - 避免文件名包含特殊字符或空格,建议用小写字母+下划线命名
- 确认图片确实存在于
清理缓存并重启项目
- 执行命令:
flutter clean清理项目缓存 - 关闭当前模拟器/真机,重新运行
flutter run
- 执行命令:
iOS端Xcode资源检查
- 打开iOS项目(
ios/Runner.xcworkspace) - 确认
Assets.xcassets中已添加目标图片,或Copy Bundle Resources列表包含你的图片文件夹
- 打开iOS项目(
测试路径写法
尝试调整路径写法验证:Image.asset('assets/images/pic.png') // 或显式指定package(无自定义package时传null) Image.asset('assets/images/pic.png', package: null)
内容的提问来源于stack exchange,提问作者Cesar Rodriguez
相关产品推荐
相关产品推荐

