内容简介:作者:Thelastgame链接:https://www.jianshu.com/p/579d94f4ddf5
code小生
一个专注大前端领域的技术平台
公众号回复 Android
加入安卓技术群
作者:Thelastgame
链接:https://www.jianshu.com/p/579d94f4ddf5
声明:本文已获 Thelastgame
授权发表,转发等请联系原作者授权
相信看过官方更新日志的小伙伴都知道新版本的flutter和Android原生交互有一些改变,主要在以下部分
1.自定义的Plugin类需要实现FlutterPlugin的接口,并实现以下两个方法
@Override public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { //注册,等同于原来的registerWith final MethodChannel channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "flutter_wx"); channel.setMethodCallHandler(new FlutterWxPlugin()); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { }
2.获取Flutter传递过来的数据(方法名)需要实现MethodCallHandler(和之前版本的一样)
@Override public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { Log.d(TAG, "onMethodCall:" + activity); Toast.makeText(activity, "TestActivity", Toast.LENGTH_SHORT).show(); if (call.method.equals("getPlatformVersion")) { result.success("Android " + android.os.Build.VERSION.RELEASE); } else { result.notImplemented(); } }
3.现在有一个需求就是需要在onMethodCall方法中获取activity对象,新版本给我们提供了新的接口让我更好的来处理Plugin和Activity的一些交互,所以我们实现ActivityAware这个接口,重写下面的方法,在onAttachedToActivity中我们可以通过binding.getActivity()获取当前的activity对象,然后赋给我们定义的全局变量,这个时候问题来了,我们在onMethodCall方法中得到的activity的值始终为null
@Override public void onAttachedToActivity(ActivityPluginBinding binding) { Log.d(TAG, "onAttachedToActivity"); this.activity = binding.getActivity(); } @Override public void onDetachedFromActivityForConfigChanges() { } @Override public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { } @Override public void onDetachedFromActivity() { }
4.解决方法,修改 onAttachedToEngine方法中的channel.setMethodCallHandler(new FlutterWxPlugin())为 channel.setMethodCallHandler(this);
@Override public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { //注册,等同于原来的registerWith final MethodChannel channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "flutter_wx"); channel.setMethodCallHandler(this);//修改此处为this }
5.总结,具体问题的原因还没有细研究,当Plugin初始化的时候复写的方法会执行两次。期待官方的解决办法。
参考 https://www.gitmemory.com/issue/flutter/flutter/48802/575876559
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何从 Java 8 升级到 Java 12,升级收益及问题处理技巧
- ReactNative升级0.56.0注意问题
- 工业4.0转型升级需要注意哪些问题?
- 升级到php7.2遇到的问题
- Nuxt升级2.0.0时出现的问题
- HBASE升级导致OpenTSDB服务不可用问题分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
啊哈C!思考快你一步
啊哈磊 / 电子工业出版社 / 2013-9 / 39.00元
这是一本非常有趣的编程启蒙书,全书从中小学生的角度来讲述,没有生涩的内容,取而代之的是生动活泼的漫画和风趣幽默的文字。并配合超萌的编程软件,从开始学习与计算机对话到自己独立制作一个游戏,由浅入深地讲述编程的思维。同时,与计算机展开的逻辑较量一定会让你觉得很有意思。你可以在茶余饭后阅读本书,甚至蹲在马桶上时也可以看得津津有味。编程将会改变我们的思维,教会我们如何思考,让我们的思维插上计算机的翅膀,以......一起来看看 《啊哈C!思考快你一步》 这本书的介绍吧!