写点什么

2021 首次发车,Flutter Fair 正式开源了

发布于: 2021 年 11 月 06 日

Fair 是面向 Dart 的框架,虽然 JavaScript 是世界上“最好的语言”,但是我们仍然选择面向 Dart 而不是 JS。有两个考量:


  • 基于 JS 的框架社区已经存在了,不想重复造轮子。

  • 面向 JS 存在通信的鸿沟,且对 Dart 开发者不够友好,如果使用 JS,与 RN 打照面好像有点尴尬。


Fair 通过 DSL 动态,结合 Module 组件,实现 UI 和逻辑的协作。其中 DSL 可以通过 Bundle 下发,Module 需要作为基础能力,固化在 App 中跟版迭代。



概括一下 Fair 的面貌:


  1. Fair 是面向原生 Flutter 开发者的,你不需要使用前端 JS 技术栈

  2. Fair 的性能得益于 Dart,无桥接更纯真

  3. Fair 适用于 Android,iOS,Web 等全平台,Flutter 可以用在哪里 Fair 就可以在哪里

  4. Fair 是平台无关的,像普通 Package 一样,甚至可以和其他 flutter 动态化框架一起用


效果怎么样?




其实这个完全取决你能用 Flutter 画出多美妙的 UI。如果非要说 Flutter 是一个画画图的框架,那他绝不会让你失望的。


Fair 的 UI 渲染是 无损的,可以做到 像素级别的还原。



录制的视频可以访问文档平台查看:https://fair.58.com/guide/#demo-preview


Flutter 模板工程 Hello World




通过 flutter create 可以新建一个模板工程,内容是一个点击计数器效果。 我们将生成的源码,接入 Fair 后既可以通过动态形式去展示这个点击计数的逻辑。


效果


Flutter 原生 Flutter Fair




Fair 接入


FairWidget(


name: 'home_page',


path: 'assets/bundle/lib_home_page.fair.json',


data: {


'title': 'Flutter Demo Home Page',


},


)


Flutter 源码


/*


  • Copyright (C) 2005-present, 58.com. All rights reserved.

  • Use of this source code is governed by a BSD type license that can be

  • found in the LICENSE file.


*/


import 'package:fair/fair.dart';


import 'package:flutter/material.dart';


import 'theme.dart';


@FairPatch()


class MyHomePage extends StatefulWidget {


MyHomePage({Key key, this.title}) : super(key: key);


final String title;


@override


_MyHomePageState createState() => _MyHomePageState();


}


class _MyHomePageState extends State<MyHomePage> {


@FairWell('_counter')


int _counter = 0;


@FairWell('_incrementCounter')


void _incrementCounter() {


setState(() {


_counter++;


});


}


@override


Widget build(BuildContext context) {


return Scaffold(


appBar: AppBar(


title: Text(widget.title),


),


body: Center(


child: Column(


mainAxisAlignment: MainAxisAlignment.center,


children: <Widget>[


Text(


'You have pushed the button this many times:',


),


Text(


'$_counter',


style: ThemeStyle.headline4(context),


),


],


),


),


floatingActionButton: FloatingActionButton(


onPressed: _incrementCounter,


tooltip: 'Increment',


child: Icon(Icons.add),


),


);


}


}


AdobeXD plugin 支持




在前端开发中,有一种技术叫做代码生成,可以基于设计稿直接生成 js/css 代码。Adobe 的工程师团队也在做面向 Flutter 代码生成的插件 AdobeXD。这个插件目前还是早期阶段 xd-to-flutter-plugin


由于 Flutter 这种书写界面的方式和 HTML 相差无几,技术上是完全可行的。可以开发一套功能有限的运营平台,实现基础界面的拖拽设计,然后导出 flutter 代码。这里我们利用 Adobe XD 插件生成的 flut


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ter 工程,直接转换为 Fair 动态化。都不用写“俄罗斯套娃”布局了,是不是想想还有点刺激的


效果



Flutter 原生



Flutter Fair1



Flutter Fair2


Fair 接入


FairWidget(


name: 'adobe_xd',


path: kIsWeb


? 'assets/bundle/lib_Home.fair.json'


: 'assets/bundle/lib_Home.fair.bin',


data: {


'svg_il6hf2': svg_il6hf2,


'svg_uvjlj2': svg_uvjlj2,


'svg_6o6tx4': svg_6o6tx4,


'svg_emmxj3': svg_emmxj3,


'svg_dzwujb': svg_dzwujb,


'svg_p45gdo': svg_p45gdo,


'svg_20idv2': svg_20idv2


},


)


Flutter 源码

评论

发布
暂无评论
2021首次发车,Flutter Fair正式开源了