问题简介
应用里面有聊天功能,我们用到了第三方的包em_chat_uikit
自定义三方包
由于直接用第三方的包em_chat_uikit不能完全满足需求,所以需要下载源代码之后,以插件的形式引入工程,然后做自定义的修改。
由于依赖导致的问题
em_chat_uikit的源代码中,用到了三方包im_flutter_sdk的内容。现在的版本是4.8.2+1。
但是当时转本地开发的时候,版本是4.6.1+2
版本升级之后,有可能函数接口名字或者参数都会改变(三方库做得不好导致),会导致编译不过。
Pub Upgrade谨慎使用
这次升级,就导致依赖的em_chat_uikit编译不过,因为响应的方法名称都改变了。
并且最终的版本应该到pubspec.lock中去找,pubspec.yaml中设置的可能会失效。
最终Pub Get之后,最终im_flutter_sdk的版本是lock文件中的4.8.2,而不是配置文件中宏期望的4.6.1;这里刚好出了问题,出现了函数参数不匹配的问题,导致编译不通过。
解决方案
- 最简单的方法就是直接修改pubsepc.lock文件中的版本为想要的版本。
- 防止出现这种问题,防止误点“Pub upgrade”,可以把pubsepc.lock加入git管控。
- 修改自定义的三方包,将错误解决。既然已经下载到本地自定义开发,兼容最新版本的依赖库也是应该的。