Flutter集成agora_rtc_engine报错$enumDecode方法不存在如何解决
报错根因
该错误与agora_rtc_engine的音视频功能逻辑无关,属于依赖版本不兼容问题:$enumDecode是json序列化配套库json_serializable提供的枚举解析方法,高版本json_annotation已移除这个顶层方法,而agora_rtc_engine内置的序列化生成代码仍在调用该旧方法。哪怕升级agora_rtc_engine到最新版本,只要项目内json_annotation版本和agora适配版本不匹配,就会持续触发该报错。
解决步骤
- 清理项目旧缓存与依赖锁,排除旧配置干扰:
项目根目录执行命令:
手动删除项目根目录下的flutter cleanpubspec.lock文件,全系统通用无需额外命令。 - 配置兼容版本的json_annotation:
打开项目根目录的pubspec.yaml,在dependencies区块下添加版本约束,agora_rtc_engine 4.x全系列适配的json_annotation稳定版本为4.8.1:dependencies: flutter: sdk: flutter # 原有依赖全部保留,新增以下配置 json_annotation: 4.8.1 - 若项目内其他依赖强制拉高json_annotation版本,直接在
pubspec.yaml末尾添加全局覆盖配置,强制全项目使用指定兼容版本:dependency_overrides: json_annotation: 4.8.1 - 重新拉取项目依赖,根目录执行命令:
flutter pub get - 若项目本身使用build_runner生成自有序列化代码,执行命令重新生成代码,避免自有代码与依赖版本冲突:
flutter pub run build_runner build --delete-conflicting-outputs - 重新启动运行应用,报错即可消除。
内容的提问来源于stack exchange,提问作者afifi
相关产品推荐
相关产品推荐

