Flutter升级后BasicMessageChannel不存在setMockMessageHandler错误如何解决
Flutter升级编译报错解决方案
报错产生原因
该报错由Flutter版本与依赖库API不兼容导致:你升级到的Flutter 3.0+版本对BasicMessageChannel类的API做了破坏性调整,移除了原有的setMockMessageHandler方法;而你项目依赖的video_player_platform_interface:2.2.0属于旧版本,内部仍在调用已经被移除的setMockMessageHandler方法,因此编译阶段会抛出方法未定义的错误。
解决方法
- 方案一:升级video_player依赖版本
直接在pubspec.yaml中将video_player依赖升级到适配Flutter 3.0+的最新稳定版,新版video_player已经将其依赖的video_player_platform_interface升级到了适配新版API的版本,修改完成后执行flutter pub get重新编译即可。 - 方案二:添加依赖覆盖规则(适用于无法升级video_player大版本的场景)
在pubspec.yaml中添加dependency_overrides配置,强制指定兼容新版Flutter的video_player_platform_interface版本:
配置完成后依次执行dependency_overrides: video_player_platform_interface: ^4.2.0flutter clean、flutter pub get,再重新编译项目即可。 - 方案三:自定义代码适配(仅适用于你自己的业务代码/本地插件调用了该方法的场景)
直接将代码中所有的setMockMessageHandler方法调用替换为Flutter新版提供的setMockDecodedMessageHandler即可。
内容的提问来源于stack exchange,提问作者Kiranmayi Jagan
相关产品推荐
相关产品推荐

