FAIR

FAIR

Flutter动态化框架

使用指南 💡Github

轻量级

核心运行时仅2.6K行代码,身型轻巧,体积没烦恼

低侵入

整体PUB依赖,只需几行代码,FAIR即刻运行

易扩展

插拔式的组件,一个注解搞定业务组件和社区UI库,扩展你的想象

更灵活

通过一份Flutter源代码,动态&原生灵活转换,成本无限小

Flutter全适配

不断更新的Fair-Version,适配大多数Flutter版本,无版本焦虑

热更新平台

完善的热更新平台,一键部署到任何地方

IDE插件

IDE配套插件,实时监测您的Flutter-FAIR语法,遇到问题一键替换

在线平台

随时随地享受Flutter-FAIR带给你的超强体验


现在就上车

简单几步,接入Fair.

1、同步fair工程代码

推荐同步 fairopen in new window 相关代码,并且进行本地依赖:

同步方式:

git clone https://github.com/wuba/fair.git

2、在 pubspec.yaml 添加依赖

将Fair工程和对应的业务工程放在同一个目录中,并添加依赖:

# add Fair dependency
dependencies:
  fair: 3.0.0

# add build_runner and compiler dependency
dev_dependencies:
  build_runner: ^2.0.0
  fair_compiler: ^1.4.0

# switch "fair_version" according to the local Flutter SDK version
# Flutter SDK 3.3.x(3.3.0、3.3.1、3.3.2、3.3.3、3.3.4、3.3.5、3.3.6) -> flutter_3_3_0
# Flutter SDK 3.0.x(3.0.0、3.0.1、3.0.2、3.0.3、3.0.4、3.0.5) -> flutter_3_0_0
# Flutter SDK 2.10.x(2.10.0、2.10.1、2.10.2、2.10.3) -> flutter_2_10_0
# Flutter SDK 2.8.x(2.8.0、2.8.1) -> flutter_2_8_0
# Flutter SDK 2.5.x(2.5.0、2.5.1、2.5.2、2.5.3) -> flutter_2_5_0
# Flutter SDK 2.0.6 -> flutter_2_0_6
# Flutter SDK 1.22.6 -> flutter_1_22_6
dependency_overrides:
  fair_version:
    path: ../fair/flutter_version/flutter_3_3_0

3、将App替换为FairApp

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({})}),
  ),
);

4、添加FairWidget作为动态Widget

FairWidget(
  name: 'DynamicWidget',
  path: 'assets/bundle/lib_src_page_dynamic_widget.fair.json',
  data: {"fairProps": json.encode({})}),

根据不同场景诉求,FairWidget可以混合和使用

  1. 可以作为不同组件混合使用
  2. 一般作为一个全屏页面
  3. 支持嵌套使用,即可以局部嵌套在普通Widget下,也可以嵌套在另一个FairWidget下

相关示例详情,请查看 exampleopen in new window 代码