美文网首页
FlutterBoost源码

FlutterBoost源码

作者: gczxbb | 来源:发表于2019-12-25 22:47 被阅读0次

一、如何实现公共引擎

组件:BoostFlutterActivity,父类直接Activity,和Flutter框架的FlutterActivity无关。
委托者:FlutterActivityAndFragmentDelegate。
视图:委托者负责提供。
在onCreate()启动方法,创建委托者,onAttach()方法,初始化引擎引用,Host提供,将组件的功能通过Host接口方式通知委托者。

FlutterBoost单例,包含一个公共引擎FlutterEngine,FlutterBoost结构。

FlutterBoost结构

Application初始化,FlutterBoost类,容器管理器,引擎,当前组件。

public void onCreate() {
    super.onCreate();
    ...
    Platform platform = new FlutterBoost
            .ConfigBuilder(this, router)
            .isDebug(true)
            .whenEngineStart(FlutterBoost.ConfigBuilder.ANY_ACTIVITY_CREATED)
            .renderMode(FlutterView.RenderMode.texture)
            .pluginsRegister(pluginsRegister)
            .build();
    FlutterBoost.instance().init(platform);
}

FlutterBoost初始化,Platform建造者配置应用级属性。设置Router,引擎初始化时机,当第一个任何Activity启动时初始化(当前设置),立即初始化,Flutter组件Activity启动时初始化。

初始化流程,doInitialFlutter()方法,创建FlutterEngine引擎,executeDartEntrypoint()方法,运行Bundle。

public FlutterEngine provideFlutterEngine(@NonNull Context context) {
    return FlutterBoost.instance().engineProvider();
}

二、生命周期

BoostFlutterActivity生命周期,委托Delegate。
onResume()方法,mSyncer同步Dart,mSyncer是容器ContainerRecord,由持委托者有的容器通知Dart层。


三、视图结构

委托者onCreateView()方法,返回组件根视图setContentView()设置。

视图结构

XFlutterView是FlutterBoost根据embedding包下的源码,重写的FlutterView,定义两种绘制视图,SurfaceView和TextureView的子类。
FlutterSplashView是FrameLayout布局,父节点。

委托者关系。

委托者关系图

组件中,容器,视图,引擎。


四、视图管理器

FlutterViewContainerManager,Flutter视图容器管理者。
IOperateSyncer,视图容器,具体对象ContainerRecord。
ContainerRecord,记录容器状态,和Dart同步方法,创建、不可见、可见,通知Dart层。
每个BoostFlutterActivity容器,一个委托者,一个ContainerRecord,
视图创建一个ContainerRecord,代表一个Boost管理的容器。

FlutterViewContainerManager管理器。

视图管理器关系

五、插件

FlutterBoostPlugin
MethodChannel,原生调用Flutter
didInitPageContainer,didShowPageContainer,didDisappearPageContainer
在生命周期容器状态改变时,通知当前容器Dart层。


任重而道远

相关文章

网友评论

      本文标题:FlutterBoost源码

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