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,则会在打开页面的同时,去打开一个新容器。
Flutter(五):Flutter 加入现有App的方案选择(Flutter_Boost)的更多相关文章
- Flutter项目之app升级方案
题接上篇的文章的项目,还是那个空货管理app.本篇文章用于讲解基于Flutter的app项目的升级方案. 在我接触Flutter之前,做过一个比较失败的基于DCloud的HTML5+技术的app,做过 ...
- 【Flutter】Flutter 一些常用库
Flutter社区和资源传送门 新: 慕课网<Flutter入门与案例实战> | 中文网<Flutter实战>电子书 字体图标生成 http://fluttericon ...
- Flutter介绍 - Flutter,H5,React Native之间的对比
Flutter介绍 Flutter是Google推出的开源移动应用开发框架.开发者可以通过开发一套代码同时运行在iOS和Android平台. 它使用Dart语言进行开发,并且最终编译成各个平台的Nat ...
- 【手把手学习flutter】Flutter打Android包的基本配置和包体积优化策略
[手把手学习flutter]Flutter打Android包的基本配置和包体积优化策略 关注「松宝写代码」,回复"加群" 加入我们一起学习,天天向上 前言 因为最近参加2020FE ...
- App自动化测试方案
App自动化测试方案 1.1 概述 什么是App自动化?为什么要做App自动化? App自动化是指给 Android或iOS上的软件应用程序做的自动化测试. 手工测试和自动化测试的对比如下: 手工测 ...
- Flutter framework & Flutter basics
Flutter framework & Flutter basics https://flutter.dev/docs/get-started/learn-more UI widgets ht ...
- Flutter web & Flutter
Flutter web & Flutter Google I/O 2019 recap & GDG shanghai flutter 与 Android 原生,应用应用,性能对比, d ...
- Redis高可用详解:持久化技术及方案选择
文章摘自:https://www.cnblogs.com/kismetv/p/9137897.html 前言 在上一篇文章中,介绍了Redis的内存模型,从这篇文章开始,将依次介绍Redis高可用相关 ...
- Redis高可用详解:持久化技术及方案选择 (推荐)--转载自编程迷思博客www.cnblogs.com/kismetv/p/8654978.html
一.Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义. 我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常 ...
- InstallShield安装包中集成第三方安装包的方案选择
原文:InstallShield安装包中集成第三方安装包的方案选择[转] 我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的 ...
随机推荐
- Prometheus之自定义标签
前言: 我们一般通过grafana导入Dashboard模板用来展示数据,但是有时候需要自己定义展示项目,这时需要自己在Prometheus重新自定义标签,并在grafana进行应用. 1.Prome ...
- 面向切面编程AOP[二](java @EnableAspectJAutoProxy 代码原理)
前言 @EnableAspectJAutoProxy 是启动aop功能的意思,那么里面是什么呢? 正文 @Target({ElementType.TYPE}) @Retention(Retention ...
- Elasticsearch数据同步优化
Elasticsearch数据同步优化 背景 为了满足项目需求,需要将大量数据的数据写入到ES进行检索,预估数据量是40亿左右,目前需要同步进去的是2亿左右. ES集群配置 三台128G的国产服务器 ...
- 如何将 ASP.NET Core MVC 项目的视图分离到另一个项目
如何将 ASP.NET Core MVC 项目的视图分离到另一个项目 在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事.但是在某些场景下 SSR 还是有意想不到效果. ...
- 力扣54(java)-螺旋矩阵(中等)
题目: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. 示例 1: 提示: m == matrix.lengthn == matrix[i].leng ...
- 力扣13(java)-罗马数字转整数(简单)
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 ...
- 牛客网-SQL专项训练3
①这里有一张user表包含如下信息: 现在要把name列的所有值都转换为大写,并将字段重命名为names,像下面这样: SQL语句为:SELECT UCASE(name) AS names FROM ...
- 阿里巴巴大规模应用Flink的踩坑经验:如何大幅降低 HDFS 压力?
众所周知 Flink 是当前广泛使用的计算引擎,Flink 使用 checkpoint 机制进行容错处理[1],Flink 的 checkpoint 会将状态快照备份到分布式存储系统,供后续恢复使用. ...
- [GPT] 用dogecoin接受付款,如何实现收款回调,不借助中心化的第三方
要在不借助中心化的第三方的情况下实现Dogecoin的收款回调,您可以按照以下步骤进行操作: 1. 设置一个用于接收收款回调的URL:您需要在您的网站或应用程序中设置一个用于接收收款回调的URL. ...
- [FAQ] Vue 如何控制标签元素的某个属性的显示 ?
这需要借助 v-model 的用法,动态决定元素的展示. <q-btn :disable="2 > 1">按钮</q-btn> 展示结果是:<q ...