Flutter构建报错:DecoderCallback未找到问题解决求助
问题原因
DecoderCallback是Flutter SDK中的回调类型,你使用的photo_manager-2.8.1和flutter_blurhash-0.7.0版本较旧,未适配当前Flutter版本的API变更,导致类型无法识别,最终引发Gradle构建失败。
解决方案
升级依赖包到最新版本
打开项目的pubspec.yaml文件,将两个依赖的版本号更新为最新稳定版:dependencies: photo_manager: ^最新版本号 flutter_blurhash: ^最新版本号然后执行命令:
flutter pub upgrade(可通过pub.dev查询两个包的最新稳定版本)
清理项目缓存
若升级依赖后仍有问题,执行以下命令清理缓存并重新获取依赖:flutter clean flutter pub get适配Flutter版本
若升级依赖后报错依旧,检查当前Flutter版本是否与依赖包兼容。可尝试升级Flutter到最新稳定版:flutter upgrade若依赖包暂不支持最新Flutter,可临时降级到兼容版本:
flutter downgrade <兼容版本号>临时应急修复(不推荐)
若暂时无法升级依赖,可手动修改缓存中的依赖代码:找到缓存内对应文件(如C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/photo_manager-2.8.1/lib/src/internal/image_provider.dart),将DecoderCallback替换为当前Flutter版本对应的类型(如ImageDecoderCallback)。但此方法会在执行flutter pub get后被覆盖,仅作为临时方案。
报错详情
在调试模式下启动lib\main.dart到sdk gphone64 x86 64... 从JAVA_HOME获取java版本: C:\Program Files\Android\Android Studio\jbr photo_manager的java版本为17
/C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: Type 'DecoderCallback' not found.
DecoderCallback decode, // ignore: deprecated_member_use
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: Type 'DecoderCallback' not found.
DecoderCallback decode, // ignore: deprecated_member_use
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: 'DecoderCallback' isn't a type.
DecoderCallback decode, // ignore: deprecated_member_use
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: 'DecoderCallback' isn't a type.
DecoderCallback decode, // ignore: deprecated_member_use
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_blurhash-0.7.0/lib/src/blurhash_image.dart:32:48: Error: Type 'DecoderCallback' not found. ImageStreamCompleter load(BlurHashImage key, DecoderCallback decode) => OneFrameImageStreamCompleter(_loadAsync(key));
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_blurhash-0.7.0/lib/src/blurhash_image.dart:32:48: Error: 'DecoderCallback' isn't a type. ImageStreamCompleter load(BlurHashImage key, DecoderCallback decode) => OneFrameImageStreamCompleter(_loadAsync(key));
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_blurhash-0.7.0/lib/src/blurhash_widget.dart:218:42: Error: Type 'DecoderCallback' not found. ImageStreamCompleter load(UiImage key, DecoderCallback decode) => OneFrameImageStreamCompleter(_loadAsync(key));
^^^^^^^^^^^^^^^ /C:/Users/shafi/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_blurhash-0.7.0/lib/src/blurhash_widget.dart:218:42: Error: 'DecoderCallback' isn't a type. ImageStreamCompleter load(UiImage key, DecoderCallback decode) => OneFrameImageStreamCompleter(_loadAsync(key));
^^^^^^^^^^^^^^^ Target kernel_snapshot failed: ExceptionFAILURE: Build failed with an exception.
- 位置: 脚本 'C:\src\flutter\packages\flutter_tools\gradle\src\main\groovy\flutter.groovy' 第1350行
- 错误原因: 任务 ':app:compileFlutterBuildDebug' 执行失败。
进程 'command 'C:\src\flutter\bin\flutter.bat'' 以非零退出值1结束
- 尝试方案:
使用--stacktrace选项获取堆栈跟踪。
使用--info或--debug选项获取更多日志输出。
使用--scan选项获取完整洞察。
- 如需更多帮助可查看Gradle官方文档
构建在16秒内失败 Exception: Gradle任务assembleDebug失败,退出码为1
已退出(1)。
内容的提问来源于stack exchange,提问作者Shafin Muhammed

