ITPub博客

首页 > 移动开发 > ANDROID > Flutter1.12 升级后有什么问题?类型盘点(附学习文档)

Flutter1.12 升级后有什么问题?类型盘点(附学习文档)

原创 ANDROID 作者:yilian 时间:2020-03-04 17:35:49 0 删除 编辑

相信看过官方更新日志的小伙伴都知道新版本的 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

image
image

05 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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69952849/viewspace-2678527/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
人生的长跑中,跑得最远的人,可能不是跑得最快的人,而是规划了最佳行程的人 Android学习也是如此,分享Android学习内容、面试精选等,关注我,需要学习计划大纲和学习内容:xx13414521

注册时间:2019-11-05

  • 博文量
    175
  • 访问量
    178592