flutter遇到MissingPluginException问题解决

        初学flutter不久,这次在Android上集成FlutterBoost v3.0-null-safety-preview.9版本,期间过程各种种问题(网上都是3.0以下的集成问题,所以有问题只能自己慢慢磨),最后还是集成成功了。

        提测阶段,测试发现flutter调起Android手机的打电话页面失败,调试发现报错Unhandled Exception:MissingPluginException,flutter中这个功能使用的是第三方库url_launcher,于是想到是不是自己插件注册没写,网上查资料,关于插件注册的都是FlutterBoost3.0以下的,结果花费很长时间按网上的方法各种尝试解决,包括flutter clean、pub get、pub upgrade、删缓存等等,一天过去依然没有头绪,ios端运行是正常的,所以只能确定是自己集成上有问题,有点沮丧。

        唯一结果是定位到插件注册方法GeneratedPluginRegistrant.registerWith报错,说明插件注册是有执行,只是报错了,下图是我工程用到的flutter第三方库插件注册代码(这块代码是自动生成的):

调试运行到keyboard的注册时报错, 但是这个报错在控制台是不会输出的(好坑),于是自己加上try catch打印错误,

java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.BinaryMessenger.setMessageHandler(java.lang.String, io.flutter.plugin.common.BinaryMessenger$BinaryMessageHandler)' on a null object reference

 所以,应该是这个注册失败导致后续的插件都没有继续注册,先注释掉这行代码,一行一行排查,最终发现是keyboard和screen这两个插件注册会失败,一旦失败,代码不会继续执行,之后的插件就都不注册了,先注释这两行注册代码,运行项目,发现flutter可以正常调起Android的拨打电话页面了,说明问题就出在这里,好激动!!

解决办法:

把有问题的第三方插件去掉或者尝试更换版本看看,再不行通过event事件native实现功能

感想:

flutter开发学习到现在也有两个多月了,期间碰到的问题也不少,定位问题感觉有点困难,在集成FlutterBoost的时候就感觉到了,往往问题你不好定位出现在哪里,这次碰到的问题就是注册插件失败他就没有日记提示。可能是我还太菜,感觉不是那么好用。

 

        最后感谢这个链接的作者,在我苦苦查询资料无果时,偶然发现了他的文章,我才最终发现自己这里的问题和他是一样的

flutter 遇到MissingPluginException不要慌,百度和google都帮不了你的话,来找我! - 兰贝科技现象不知道从哪个时间点开始,突然间flutter项目就不香了。可以直接运行到手机上,但是某些功能无法使用。比如最常见的SharedPreference,比如FlutterToast,之前都是正常使用的,并且已经稳定使用很长时间了。当然,也有可能是你自己做的插件,确定没有什么问题的,突然间就无法使用了icon-default.png?t=L892http://blog.z7ge.com/archives/flutter-missingpluginexception-bu-yao-huang

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值