版本记录
Fair 版本说明
3.10.0
更新时间:2023.08.15
- 适配Flutter 3.10.0,发布 Fair Version 3.10版本
- 修复已知BUG,修复DSL解析器问题
3.2.1
更新时间:2023.04.13
- 修复3.2.0已知问题,提高系统稳定性
3.2.0
更新时间:2023.04.12
- 增加通用 FairPlugin 的 JS 和 Dart 代码,复用相同的交互逻辑,增加例子注释
- 调整 dispose 的调用顺序,不在树上面,后续操作停止
- Json 解析兼容
- Android 中使用 V8 引擎调用 executeFunction 时添加异常捕获及日志打印
- 修复 SliverGridDelegateWithFixedCrossAxisCount 转换报错
- SugarMap 和 SugarMapEach 的输入支持其他 Sugar 表达
- 优化 ifEqual ifEqualBool switchCase 的性能
- 修复 Domain 不识别 Sugar 中的 index 和 item
- 让 AOT 也遵循条件达成才执行代码
- 修复 SugarMap 和 SugarMapEach 集合入参不支持其他 Sugar 语法
- 抽象 Domain,增加 IndexDomain、MapEachDomain,支持嵌套 Domain
- 新增 FunctionDomain 通用 Domain,为回调function 生成对应的参数供 FunctionDomain 使用
- 新增 NullableIndexedWidgetBuilder,IndexedWidgetBuilder,WidgetBuilder,TransitionBuilder 常用的 Sugar 支持
- 修复部分已知问题
3.1.0
更新时间:2023.03.14
- 升级 analyzer 库到 5.5.0 版本;
- Dart 函数转 JS 支持参数传递;
- JS Object 取值兼容;
- 删除 fair/android 中 kotlin 依赖;
- 添加 IconData 的自定义解析;
- 可选位置参数的生成修改为 pa 获取;
- 修复 OptionalPositional 参数默认值丢失问题;
- 去除 generated.fair.dart 注释中的生成时间;
- 增加 ignore unnecessary_import 操作;
- 修复 Sugar.switchCase key 和 defaultValue 赋值错误问题;
- binding 修改为 SplayTreeMap,增加搜索效率,特别是对于列表,短时间会搜索重复 tag;
- 暴露出 specialBinding 以便用户能重载某个值;
- provider 添加到 _binding 中的时候以用户设置的为准,方便用户快速修正;
- 修复 loadCoreJs package 拼接问题;
- 降低 minSdkVersion 版本到 16;
- runApplication 支持指定 JS 所在的 package;
- 修复 _reload 方法中调用 context 报错问题。
贡献者
zmtzawqlp 💻 | 陈有余 💻 |
3.0.0
更新时间:2022.11.18
- 修复 class 构造函数解析异常;
- Fair 兼容 Web 端;
- bindmap 逻辑优化。
2.8.1
更新时间:2022.11.01
- 修复 bug:CustomScrollView 引用外部函数构建 builder 报错。
2.8.0
更新时间:2022.10.21
- 适配 Flutter SDK 3.3.0+;
- 新增语法糖:Sugar.isNestedScrollViewHeaderSliversBuilder、Sugar.isButtonStyle、Sugar.isDuration、Sugar.popMenuButton、Sugar.sliverChildBuilderDelegate、Sugar.sliverGridDelegateWithFixedCrossAxisCount;
- 修复了一些bug。
2.7.0
更新时间:2022.08.10
Fair 适配 Flutter SDK 3.0.0、3.0.1、3.0.2、3.0.3、3.0.4、3.0.5版本;
修复部分已知BUG
2.6.0
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}"),
2.5.0
更新时间:2022.05.31
版本特性
Fair
- 适配 Flutter SDK 2.8.0、2.8.1
- Dart2JS 支持解析单例
- 新增语法糖Sugar.switchCase、Sugar.colorsWithOpacity、Sugar.convertToString等
example
全面优化example结构,升级example体验,更适合新手入门。
在源码中,新增 example 工程,用于提供 Fair API 的标准用法。
example 工程位置:fair/example
贡献者
xiangwc 💻 | WangYk 💻 | gongpengyang 💻 | qixu 💻 | yangyang 💻 | 陈有余 💻 |
2.4.1
更新时间:2022.05.12
特性
Fair
- 修复 FairLogger 文件导包问题
- 升级 analyzer 到 2.3.0
贡献者
陈有余 💻 | yangyang 💻 |
2.4.0
更新时间:2022.04.26
特性
Fair
- FlatBuffers 支持在 null safe 环境下生成 bin 文件
贡献者
陈有余 💻 |
2.3.0
更新时间:2022.04.22
特性
Fair
- 支持空安全 null-safe
- 适配Flutter SDK 2.5.0、2.5.1、2.5.2、2.5.3等版本
demo
- 升级 sample 工程里过时的demo
- 补充 sample 工程里 iOS 的运行环境
贡献者
gongpengyang 💻 | qixu 💻 | 陈有余 💻 | yangyang 💻 |
2.2.0
- Fair 2.2.0 版本新增了对 Flutter 2.5.0 版本的支持;
- 修复了部分 bug。
2.0.0
Fair 2.0版本新增对逻辑动态化和对Flutter 2.0的版本的支持,其中逻辑动态化支持包括了Fair Compiler工具对Dart2JS的支持、第三方插件(网络、权限、图片选择)自定义扩展接口支持。
Fair Compiler 完整开源
本次完整开源了Fair Compiler工具,Fair工具包括生成布局DSL的Dart2DSL和生成逻辑JS的Dart2JS部分。 由于compiler 在flutter build命令处理入口,但是在命令运行时下无法Debug,所以拆出了dsrt2dsl和dsrt2js核心转化处理模块,这2个模块都可以进行Debug调试,输入为文件路径。
fair
├── dsrt2dsl // dart转dsl的工具部分,生成布局元数据DSL文件
├── dsrt2js // dart转dsl的工具部分,生成逻辑JS文件
└── compiler // flutter build 自动动态化产物生成入口
更友好的命名
目录名从fair_version变更为flutter_version,内部为动态时创建的Flutter组件。
fair
└── flutter_version // flutter 版本兼容组件
新增动态逻辑处理能力
Fair 2.0 通过Fair Compiler工具,提取Widget中的逻辑部分并转化成JS文件,送给JSCore处理。Android使用了V8引擎,iOS使用的内置的JSCore。 Fair 2.0 除了JSCore处理逻辑之外,我们还在JS域增加了Fair语法糖和布局方法调用栈处理能力。
第三方插件扩展标准化
Fair 2.0 定义了IFairPlugin标准接口,定义了第三方插件接入的标准流程,同时在example中给出了网络、权限和图片选择的Demo。
fair
└── fair // fair引擎模块
└── example
└── lib/src/page
└── plugins
├── net // 网络插件
├── permission // 权限插件
└── pick-image // 图片选择