Flutter(五):Flutter 加入现有App的方案选择(Flutter_Boost)
一、介绍
用 Flutter 一次性重写整个已有的应用是不切实际的。对于这些情况,Flutter 可以作为一个库或模块,集成进现有的应用当中。模块引入到您的 Android 或 iOS 应用(当前支持的平台)中,以使用 Flutter 来渲染一部分的 UI,或者仅运行多平台共享的 Dart 代码逻辑。
二、官方方案:
将 Flutter module 集成到 Android 项目
将 Flutter module 集成到 iOS 项目
三、第三方-Flutter_Boost(推荐)
1、介绍(基于Flutter3.0版本)
版本:FlutterBoost-4.0+ & Flutter 3.0+
中文文档
中文介绍
FlutterBoost 是阿里系闲鱼技术团队开源的 Flutter 插件,它可以轻松为现有原生应用程序提供 Flutter 混合集成方案。其理念是将 Flutter 像 WebView 那样来使用。FlutterBoost 帮开发者处理 Native 与 Flutter 页面的映射和跳转,开发者只需关心页面的名字和参数即可 ( 通常可以是 URL ) 。可以让一个成熟的原生 APP 项目,在不用推翻重做的前提下,方便快捷的开始 Flutter 混合开发,几乎不影响原有的 Native 项目。同时 FlutterBoost 也是在 Flutter 官方提供的混合开发解决方案上探索出来的最优解,并已在闲鱼 APP 线上环境中运用,承受着亿级用户量的检测,稳定性值得肯定。
2、特性
- 1.不入侵引擎:flutter sdk升级不需要升级boost
- 2.iOS和Android双端接口设计统一
- 3.生命周期的精准通知
- 4.Android不需要区分androidx 和support
3、架构
4、页面生命周期设计
FlutterBoost3.0以后有两个和页面相关的概念,一个是BoostContainer,另一个是BoostPage。每个BoostContainer在Native层都会有一个与之对应的容器,比如在Android端,这个容器可能是FlutterBoostActivity或者FlutterBoostFragment,而在iOS端,这个容器则指的是FBFlutterViewContainer。每个BoostContainer都会有一个与之对应的Navigator,因而一个BoostContainer可以包含多个BoostPage,这个设计也被我们称之为双重栈。当我们需要打开一个Flutter页面时,有一个额外的参数withContainer,这个参数设置为false时,表示打开页面时不需要打开一个新容器,而这个参数如果被设置为true,则会在打开页面的同时,去打开一个新容器。