欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

alibaba/flutter_boost

程序员文章站 2022-03-20 21:59:11
flutterBoost使用笔记 新一代Flutter-Native混合解决方案。 FlutterBoost是一个Flutter插件,它可以轻松地为现有原生应用程序提供Flutter混合集成方案。FlutterBoost的理念是将Flutter像Webview那样来使用。在现有应用程序中同时管理Na ......

flutterboost使用笔记

新一代flutter-native混合解决方案。 flutterboost是一个flutter插件,它可以轻松地为现有原生应用程序提供flutter混合集成方案。flutterboost的理念是将flutter像webview那样来使用。在现有应用程序中同时管理native页面和flutter页面并非易事。 flutterboost帮你处理页面的映射和跳转,你只需关心页面的名字和参数即可(通常可以是url)。

github链接:

安卓在跟原生交互的同时,传递参数,跳转页面,业务需求下性能方面ios那边消耗比较大,会出现奔溃,所以更换flutterboost框架,不过目前来说flutterboost框架文档一般般,很多需要自己摸索,这样接入速度会比较缓慢,这里记录下吭

首先第一个吭,官网文档没更新,我曾一度的以为是我哪里导入的不对,我还去github搜了别人接入的例子,发现都跟文档上一样,后来我仔细找了下源码里的类,的确是不一样的,这时候我才确定,是文档没更新

alibaba/flutter_boost  alibaba/flutter_boost

 

 

 处理好之后,在往下看,又发现一个疑点,貌似注册了两个一模一样的监听方法,在源码中初始化构造函数里,注册了一个,然鹅demo里初始化好之后又单独注册了一下,一模一样的监听,我不知道改怎么办,如下图,是不是一模一样

alibaba/flutter_boost alibaba/flutter_boost

 

 我后面是取消了初始化下面的重复注册,因为之前的文档让我不得不表示怀疑了,后面也的确相安无事

 接下来就是数据交互了,发现demo也好,文档也好,并没有相关的介绍和代码,我蒙蔽了,幸好我叼,在源码里发现了一个类似的监听接口,而且回调后的参数都跟原生的一模一样,我猜想,就是它了

alibaba/flutter_boost

 

监听好之后,就可以跟flutter交互了,通过参数result可以传递数据给flutter,方法就是result.success("你要传递的数据");

作为一个资深被安卓玩的玩家,我知道没有那么简单,果然没有让我失望过,真好,之前构造方法里注册的methodcall,会自动监听交互回调,然后也会result.success();

但是回调中result.success()后在次success返回就会异常了,所以这里存在一个问题,flutterboost里的监听会触发result的success,然后又因为我本身用的是room数据库,只能在异步里请求数据,

所以导致不能同步执行,触发回调后,拿到回调里的参数id,根据id查询数据库,此时异步,接着同时flutterboost中的回调也触发了,执行success返回,然后此时我们的异步也返回了数据,也要执行result中的success,接着就是异常了,我曾想过修改源码,把构造函数中的监听方法注释掉,不过怕引发什么后遗症,所以暂时的解决方法是进入页面的时候就查询好数据放入集合中,回调触发在从集合中拿,销毁页面时释放集合

intent intent = flutterboostactivity.makeintent(mactivity, flutterdatabean);
startactivity(intent);

在次运行,正常跳转传递数据,result.success()后flutter正常接收,完美接入