相信看过官方更新日志的小伙伴都知道新版本的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
初始化的时候复写的方法会执行两次。期待官方的解决办法。
flutter作为跨平台的救星,很多朋友想要开始却不知道从哪里开始,这里给大家分享一套从入门到进阶的学习视频以及整理好的学习文档。
想要学习视频的朋友可以点击我 详细了解哦
一共有19个PDF文档可供学习,需要的朋友简信我【flutter】或者评论留言即可免费领取
01在Windows上搭建Flutter开发环境
02配置编辑器
03 Flutter 从我们的模板创建一个新的Flutter应用程序
04编写您的第一个 Flutter App
image05 Flutter中构建布局
06 Flutter Widget框架
07 设计基础之主题共享颜色和字体样式
08 显示网上的图片
09 List集合
10 List处理点击和手势
11 实例程序之AppBar
12 示例程序之选项卡式的AppBar
13 如何学习 Flutter 编译Android项目
14 Flutter之资源加载
15 使用Flutter IDE
16 Flutter之使用热重载
17 Flutter之调试 Flutter App
18 Flutter 之发布Android版APP
19 Flutter之发布的IOS版APP
网友评论