当前位置:网站首页>Flutter动态化 | Fair 2.6.0 新版本特性
Flutter动态化 | Fair 2.6.0 新版本特性
2022-07-29 15:57:00 【58技术】
Fair新版本特性—2.6.0
更新时间:2022.07.05
版本特性
1.Fair 支持加载手机磁盘路径上的 bundle 文件;
FairWidget( path: \'手机磁盘路径/xxx.fair.json\',)2.适配 Flutter SDK 2.10.0、2.10.1、2.10.2、2.10.3 版本;
3.Dart2JS 支持解析 static 方法;
4.运行时,页面错误信息提示优化;
当 Fair 在运行期间,出现错误时,会有如下提示:

点击错误图标,可以显示错误日志:

5.语法糖支持解析 Model 数据。
使用方式:
Step1:定义模型数据:
import \'package:fair/src/render/base_model.dart\';class Person implements BaseModel{}需要实现 toJson,添加一个 from 方法
Step2:注册模型
- 定义一个 GeneratedModule
class TestGeneratedModule implements GeneratedModule在其中注册模型
把定义的 GeneratedModule 传入到 FairApp 初始化的 generated:参数
Step3:模型使用,以 Sugar.mapEach 为例:
Sugar.mapEach([Person(name: "kk",age: 18, wei: 99)], (index, Person item) {}
需要指定 item 的类型才能用 item.name 来使用其模型数据
支持直接调用或者将其在字符串中 Text(item.name),Text("${item.age}"),
贡献者

近期规划
- 扩充及优化语法糖
- 添加更详尽的新手入门教程
Fair实验室
热更新平台
动态化方案离不开热更新平台,我们规划在近期会推出以Flutter和Dart Server为主的热更新平台,实现开发者0成本接入Fair热更能力。
线上动态化
我们也将尝试使用low code的形式,以在线化工具为基础,进行线上的Fair动态化编辑,提升整体开发效率。
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 dependencydependencies: fair: 2.6.0# add compiler dependencydev_dependencies: build_runner: ^2.0.0 fair_compiler: path: ../fair/compiler # switch "fair_version" according to the local Flutter SDK versiondependency_overrides: fair_version: 2.0.6+1通过切换 flutter_version 版本进行版本兼容。例如,将本机切换为 flutter 2.0.6 后,Fair 需要同步切换
# switch to another stable flutter versiondependency_overrides: fair_version: path: ../fair/flutter_version/flutter_2_0_62. 使用 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 规划
- 主版本计划
- null-safe 版本支持,预计4月22日上线
- Flutter 2.8.0版本适配,预计5月中旬上线
- Flutter 2.10.0版本适配,预计6月初上线
- IDE 语法检测和提示插件
- 丰富语法糖
- 热更新平台
- Dart Server工程搭建
- Flutter Web工程搭建
- 补丁/资源管理
- 项目管理
- 移动端 Update&Download
- 线上动态化
- Flutter Web工程搭建
- Dart Server工程搭建
- Action编辑
- 代码编辑
- 组件编辑
- 页面编辑
- 工程编辑
- Flutter效果预览
- Fair DSL预览
支持我们
欢迎大家使用 Fair,也欢迎大家为我们点亮star
Github地址:https://fair.58.com
Fair官网:https://fair.58.com
欢迎贡献
通过Issue提交问题,贡献代码请提交Pull Request,管理员将对代码进行审核。
对Fair感兴趣的小伙伴,可以加入交流群。
| 微信 |
|---|
![]() |
微信入群:请先添加58技术小秘书为好友,备注fair,小秘书邀请进群。
边栏推荐
- zabbix email sends alert information
- 国内EDA领导者芯和半导体完成最新一轮超亿元融资
- 一文读懂Elephant Swap,为何为ePLATO带来如此高的溢价?
- 参加Ultimate Harvest Moon活动,立即赢取终极版月光女神NFT
- 718. The longest repeat subarray
- 专访亚信科技张桦:AntDB面向企业核心业务支撑的数据库产品
- Google Play 政策更新 | 2022 年 7 月
- 教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5
- 重磅来袭!豆瓣评分9.9,万人血书的多线程与高并发v2.0版本
- Qt combat | how to access the USB device information?
猜你喜欢

中国大学慕课mooc答题/自动播放脚本(domooc)使用教程

【C语言刷题】Leetcode268丢失的数字

Moving forward steadily without forgetting the original intention, Volvo's sense of security comes from the public's recognition

Android Studio 实现登录注册-源代码 (连接MySql数据库)

【小程序项目开发--京东商城】uni-app之自定义搜索组件(上)-- 组件UI

图文结合纯c手写内存池

Dry goods!How to Construct SRv6-TE Performance Test Environment Using Instrumentation

zabbix邮件发送告警信息

如何在C语言中定义自己的数据类型?

金九银十必备 快来看看你还缺啥
随机推荐
Detailed evaluation of Renesas RZ/G2L processor
高通发布全新屏下指纹传感器:识别区域增大77%,识别速度提升50%
MLX90640 红外热成像仪开发笔记(九)
重磅来袭!豆瓣评分9.9,万人血书的多线程与高并发v2.0版本
异步请求池的实现
R语言中给数据框增加分组/根据样本名称添加分组的代码
数字孪生万物可视 | 联接现实世界与数字空间
浏览器线程
AI全流程开发难题破解之钥
如何在C语言中定义自己的数据类型?
Do you really understand the persistence mechanism of Redis?
中国厂商统治印度智能手机市场,份额提升至77%
蚂蚁三面滑铁卢!遭分布式截胡,靠这些笔记潜修 30 天,挺进京东
【服务器存储数据恢复】华为OceanStor某型号存储raid5硬盘故障离线,热备盘同步数据失败导致raid崩溃的数据恢复案例
参与一个rk3399的一起学习班级
【Swoole系列3.2】Swoole 异步进程服务系统
pjax无法生效解决办法,butterfly主题维护你的pjax
Kubernetes 的 5 个误区
Sentinel热门词汇限流如何实现
参与造谣传谣,华为宣布开除五名员工
