版本记录

Wuba2022年10月11日大约 7 分钟

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 为例:

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

  1. Fair 2.2.0 版本新增了对 Flutter 2.5.0 版本的支持;
  2. 修复了部分 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 // 图片选择
上次编辑于:
贡献者: sunzhe03