Flutter Image.asset图片缓存异常:热重载无效,新增图片崩溃
问题解答
这不属于正常行为,是Flutter开发中常见的资源缓存与索引未同步的问题。
问题原因
Flutter的Hot Reboot/Hot Restart仅针对代码逻辑变更做增量更新,不会重新构建应用的资源索引:
- 更换已有图片时,旧资源文件已被缓存到应用中,热更新不会触发缓存替换,所以仍显示旧图;
- 新增图片时,资源索引未更新,应用无法识别新的资源路径,因此抛出"图片未找到"或编解码器错误。
解决方法
- 执行
flutter clean清除项目缓存,再运行flutter run重启应用,这会强制重新构建资源索引与缓存; - 修改
pubspec.yaml中的资源配置后,执行flutter pub get确保资源索引同步; - 若使用Android Studio,可通过
File > Invalidate Caches / Restart清除IDE缓存,配合上述操作效果更好。
附用户代码与环境信息
初始代码:
Center( child: Image.asset('assets/img1.jpg') )
新增图片后的代码:
Center( child: Column(children: [ Image.asset('assets/img1.jpg'), Image.asset('assets/img2.jpg'), ]) )
环境信息:
Flutter (stable channel, 3.0.5, in Microsoft Windows [Version 10.0.19044.1889]) [√] Android toolchain - development for Android devices (Android SDK version 33.0) [√] Chrome - development for the Internet [√] Visual Studio - Development for Windows (Visual Studio Community 2022 17.3.1) [√] Android Studio (version 2021.2)
内容的提问来源于stack exchange,提问作者Dmitry Z
相关产品推荐
相关产品推荐

