美文网首页Android开发Android开发经验谈Android技术知识
Flutter1.12 升级后有什么问题?类型盘点(附学习文档)

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

作者: 程序员的Vere | 来源:发表于2020-03-04 17:19 被阅读0次

相信看过官方更新日志的小伙伴都知道新版本的flutterAndroid原生交互有一些改变,主要在以下部分

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对象,新版本给我们提供了新的接口让我更好的来处理PluginActivity的一些交互,所以我们实现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

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

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/qsyblhtx.html