Flutter动态化 | Fair 2.4.0 新版本特性
Fair 2.4.0版本开始全面支持null-safe
,并支持2.5.x所有版本。
更新时间:2022.04.26
版本特性
Fair
- 支持空安全 null-safe
- 适配Flutter SDK 2.5.0、2.5.1、2.5.2、2.5.3等版本
- FlatBuffers 支持在 null safe 环境下生成 bin 文件
demo
- 升级 sample 工程里过时的demo
- 补充 sample 工程里 iOS 的运行环境
贡献者
近期规划
- 发布Fair 2.5.0版本发布
- 适配Flutter SDK 2.8.x相关版本
- 添加 JS 通用模板
- 添加更多语法糖
- 编写Fair全新demo,详细说明落地中遇到的所有问题
- 发布新手文档,协助开发者从0到1的开发工作
- 增加idea lint插件,协助开发过程中发现问题修改问题
- Fair技术沙龙,预计6月底于各大直播平台进行直播
Fair实验室
热更新平台
动态化方案离不开热更新平台,我们规划在近期会推出以Flutter和Dart Server为主的热更新平台,实现开发者0成本接入Fair热更能力。
线上动态化
我们也将尝试使用low code
的形式,以在线化工具为基础,进行线上的Fair动态化编辑,提升整体开发效率。 <br/>
Fair简介
Fair是为Flutter设计的动态化框架,通过Fair Compiler工具对原生Dart源文件的自动转化,使项目获得动态更新Widget Tree和State的能力。
创建Fair的目标是支持不发版(Android、iOS、Web)的情况下,通过业务bundle和JS下发实现更新,方式类似于React Native。与Flutter Fair集成后,您可以快速发布新的页面,而无需等待应用的下一个发布日期。Fair提供了标准的Widget,它可以被用作一个新的动态页面或作为现有Flutter页面的一部分,诸如运营位的排版/样式修改,整页面替换,局部替换等都可以使用。
Fair 分层架构
Fair 架构由2部分组成,1为同Kraken和MXFlutter的App运行环境,2为Fair Compiler把Dart源文件编译成DSL和JS动态产物的工具。结构如下: Fair 框架中Widget构建、数据绑定以及基本的逻辑(if、List Map…)处理都在Dart域完成,留给JS侧的只有基本数据类型、运算和方法调用处理。
快速接入
1. 添加依赖
推荐将 fair 下载到本地,通过 path 相对路径进行依赖。假设 fair 项目和您自己的项目位于同一个文件夹下面:
# add Fair dependency
dependencies:
fair: 2.3.0
# add compiler dependency
dev_dependencies:
build_runner: ^2.0.0
fair_compiler:
path: ../fair/compiler
# switch "fair_version" according to the local Flutter SDK version
dependency_overrides:
fair_version: 2.0.6+1
通过切换 flutter_version 版本进行版本兼容。例如,将本机切换为 flutter 2.0.6 后,Fair 需要同步切换
# switch to another stable flutter version
dependency_overrides:
fair_version:
path: ../fair/flutter_version/flutter_2_0_6
2. 使用 Fair
常见做法是作为 App 的根节点,如果不是全局采用也可以作为子页面的根节点
void main() {
WidgetsFlutterBinding.ensureInitialized();
FairApp.runApplication(
_getApp(),
plugins: {
},
);
}
dynamic _getApp() => FairApp(
modules: {
},
delegate: {
},
child: MaterialApp(
home: FairWidget(
name: 'DynamicWidget',
path: 'assets/bundle/lib_src_page_dynamic_widget.fair.json',
data: {"fairProps": json.encode({})}),
),
);
每一个动态组件由一个FairWidget
表示。
FairWidget(
name: 'DynamicWidget',
path: 'assets/bundle/lib_src_page_dynamic_widget.fair.json',
data: {"fairProps": json.encode({})}
)
Fair资料
- Flutter动态化框架Fair文档上线&开源倒计时
- Flutter动态化框架Fair的设计与思考
- Fair 2.0 逻辑动态化开源了!
- Fair逻辑动态化架构设计与实现
- Fair逻辑动态化通信实现
- Fair下发产物-布局DSL生成原理
- Fair 逻辑语法糖设计与实现
- Fair热更新设计与实现
- Fair在安居拍房App中的实践
- Flutter 动态化项目评测
- Fair 在 58 同城拍客 App 中的实践
2022 规划
- 主版本计划
- 持续适配Flutter各版本
- 持续优化新手接入体验
- 热更新平台
- 打造完善的Fair产物热更新服务
- 线上动态化
- 尝试发布Fair线上动态化编辑平台
- 丰富Fair内容生态
欢迎贡献
通过Issue提交问题,贡献代码请提交Pull Request,管理员将对代码进行审核。
最后,欢迎大家使用 Fair,也欢迎大家为我们点亮 Star
Github :https://github.com/wuba/fair
对Fair感兴趣的小伙伴,可以加入交流群。
微信 |
---|
微信入群:请先添加58技术小秘书为好友,备注fair,小秘书邀请进群。