当前位置:网站首页>Flutter dynamic | fair 2.5.0 new version features
Flutter dynamic | fair 2.5.0 new version features
2022-07-03 13:34:00 【58 Technology】
Fair2.0 project
● Project name :Fair 2.0
● Github Address :https://github.com/wuba/fair
● Project brief introduction :Fair Is for Flutter Dynamic framework of design , Can pass Fair Compiler Tool pair Dart Conversion of source files , Make the project dynamically updated Widget The ability of .Fair 2.0 To solve the problem Fair 1.0 Version of “ Logic dynamic ” Lack of ability .
Fair New version features 2.5.0
Fair 2.5.0 The version is fully adapted Flutter 2.8.x All versions .
Update time :2022.05.31
Version features
Fair
adapter Flutter SDK 2.8.0、2.8.1
Dart2JS Support parsing singleton
Add grammar sugar Sugar.switchCase、Sugar.colorsWithOpacity、Sugar.convertToString etc.
demo
Comprehensive optimization example structure , upgrade example Experience , More suitable for beginners .
In the source code , newly added example engineering , For providing Fair API The standard usage of .example Project location :
fair/example
contributor

Instructions for new functions
Dart2JS Support parsing singleton
class PageSingleton {factory PageSingleton() =>_getInstance();static PageSingleton get instance => _getInstance();static PageSingleton _instance;PageSingleton._internal();static PageSingleton _getInstance() {if (_instance == null) {_instance = new PageSingleton._internal();}return _instance;}}
import 'package:fair/fair.dart';import './PageSingleton.dart';import './Person.dart';import 'package:flutter/cupertino.dart';import 'package:flutter/material.dart';()class MyHomePage extends StatefulWidget {MyHomePage({Key key, this.data}) : super(key: key) {}dynamic data;_MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> {()var fairProps;static int _example;/// Use single examplePageSingleton one = PageSingleton.instance;PageSingleton two = PageSingleton.instance;Person person = new Person();int _counter = 0;var _title;var _title1 = "PageSingleton instance";var _title2 = "one == null";var _title3 = "person.age";var _title4 = "person.name";void onLoad() {_title = fairProps['title'];}void initState() {super.initState();fairProps = widget.data;onLoad();}void _incrementCounter() {setState(() {_counter++;_title1 = (one == two) ? "one = two is true" : "one = two is false";_title2 = (one == null) ? "one = null is true" : "one = null is false";_title3 = "person.age = ${person.getAge}";_title4 = "person.age = ${person.getName}";_example = 1;});}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(_title),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text('You have pushed the button this many times:',),Text('$_title1'),Text('$_title2'),Text('$_title3'),Text('$_title4'),Text('$_example'),Text('$_counter',style: TextStyle(fontSize: 40, color: Color(0xffeb4237), wordSpacing: 0)),],),),floatingActionButton: FloatingActionButton(onPressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),),);}}
Sugar.switchCase
Sugar.switchCase(_value, [SugarSwitchCaseObj(reValue: Text("2-ValueTitle"), sugarCase: 2),SugarSwitchCaseObj(reValue: Text("3-ValueTitle"), sugarCase: 3),SugarSwitchCaseObj(reValue: Text("4-ValueTitle"), sugarCase: 4)], Text("default-ValueTitle"))
Sugar.colorsWithOpacity()
Sugar.colorsWithOpacity(Colors.blue, 0.5)Sugar.convertToString()
Sugar.convertToString(orginalValue: 0.4444)Short term plan
adapter Flutter 2.10.x Relevant version
Expand and optimize grammar sugar
increase idea lint plug-in unit , Assist in finding and modifying problems in the development process
Fair Technology Salon , expect 6 At the end of the month, it will be broadcast live on major live broadcasting platforms
Fair laboratory
Hot update platform
Online dynamic
We will also try to use low code In the form of , Based on online tools , Conduct online Fair Dynamic editing , Improve the overall development efficiency .
Fair brief introduction

Fair Is for Flutter Dynamic framework of design , adopt Fair Compiler Tools on native Dart Automatic conversion of source files , Make the project dynamically updated Widget Tree and State The ability of .
establish Fair Our goal is to support non distribution (Android、iOS、Web) Under the circumstances , Through business bundle and JS Issue the implementation update , In a way similar to React Native. And Flutter Fair After the integration , You can quickly publish new pages , Without waiting for the next release date of the app .Fair Provided with standard Widget, It can be used as a new dynamic page or as an existing page Flutter Part of the page , Such as operation layout / Style modification , Full page replacement , Partial replacement can be used .
Fair Layered architecture
Fair The structure is made up of 2 Part of it is made up of ,1 For the same Kraken and MXFlutter Of App Running environment ,2 by Fair Compiler hold Dart The source file is compiled to DSL and JS Tools for dynamic products . The structure is as follows :

Fair In the frame Widget structure 、 Data binding and basic logic (if、List Map…) The treatment is all in Dart Domain complete , Leave to JS There are only basic data types on the side 、 Operations and method call processing .
Fast access
1. Add dependency
It is recommended that fair Download to local , adopt path Relative path dependency . hypothesis fair The project is located under the same folder as your own project :
# add Fair dependencydependencies:fair: 2.3.0# add compiler dependencydev_dependencies:build_runner: ^2.0.0fair_compiler:path: ../fair/compiler# switch "fair_version" according to the local Flutter SDK versiondependency_overrides:: 2.0.6+1
By switching flutter_version Version compatibility . for example , Switch this machine to flutter 2.0.6 after ,Fair Synchronous switching is required
# switch to another stable flutter versiondependency_overrides:fair_version:path: ../fair/flutter_version/flutter_2_0_6
2. Use Fair
See practice as App The root node , If it is not adopted globally, it can also be used as the root node of the sub page
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({})}),),);
Each dynamic component consists of a FairWidget Express .
FairWidget(name: 'DynamicWidget',path: 'assets/bundle/lib_src_page_dynamic_widget.fair.json',data: {"fairProps": json.encode({})}),
Fair Information
Fair Information
Flutter Dynamic framework Fair The document is online & Open source countdown
Flutter Dynamic framework Fair Design and thinking of
Fair Design and implementation of logic dynamic architecture
Fair Distribution products - Layout DSL The principle of generation
2022 planning
Master version plan
null-safe Versioning support , expect 4 month 22 Day online
Flutter 2.8.0 Version adaptation , expect 5 Online in mid month
Flutter 2.10.0 Version adaptation , expect 6 On line at the beginning of the month
IDE Syntax detection and prompt plug-in
Rich grammar sugar
Hot update platform
Dart Server Project construction
Flutter Web Project construction
Patch / Resource management
project management
Mobile Update&Download
Online dynamic
Flutter Web Project construction
Dart Server Project construction
Action edit
Code editing
Component editor
Page editing
Engineering editor
Flutter Results the preview
Fair DSL preview
Welcome to contribute
Fair Official website :https://fair.58.com
adopt Issue Submission question topic , Contribution code Please submit Pull Request, The administrator will review the code .

Wechat into the group :
Please add it first 58 The technical secretary is a good friend
remarks fair Then the little secretary invited him to join the Group
This article is from WeChat official account. - 58 technology (architects_58).
If there is any infringement , Please contact the [email protected] Delete .
Participation of this paper “OSC Source creation plan ”, You are welcome to join us , share .
边栏推荐
- Red hat satellite 6: better management of servers and clouds
- Detailed explanation of multithreading
- php:&nbsp; The document cannot be displayed in Chinese
- CVPR 2022 | 美团技术团队精选6篇优秀论文解读
- mysql中的字段问题
- Start signing up CCF C ³- [email protected] chianxin: Perspective of Russian Ukrainian cyber war - Security confrontation and sanctions g
- Asp.Net Core1.1版本没了project.json,这样来生成跨平台包
- Flink SQL knows why (13): is it difficult to join streams? (next)
- CVPR 2022 | interpretation of 6 excellent papers selected by meituan technical team
- SQL Injection (GET/Select)
猜你喜欢

Flink code is written like this. It's strange that the window can be triggered (bad programming habits)

This math book, which has been written by senior ml researchers for 7 years, is available in free electronic version

Flink SQL knows why (16): dlink, a powerful tool for developing enterprises with Flink SQL

HALCON联合C#检测表面缺陷——HALCON例程autobahn

PowerPoint 教程,如何在 PowerPoint 中将演示文稿另存为视频?

106. How to improve the readability of SAP ui5 application routing URL

Setting up remote links to MySQL on Linux

Box layout of Kivy tutorial BoxLayout arranges sub items in vertical or horizontal boxes (tutorial includes source code)

35道MySQL面试必问题图解,这样也太好理解了吧

The principle of human voice transformer
随机推荐
人身变声器的原理
Father and basketball
The difference between stratifiedkfold (classification) and kfold (regression)
8 Queen question
Logseq 评测:优点、缺点、评价、学习教程
Realize the recognition and training of CNN images, and process the cifar10 data set and other methods through the tensorflow framework
Flink SQL knows why (17): Zeppelin, a sharp tool for developing Flink SQL
stm32和电机开发(从mcu到架构设计)
106. 如何提高 SAP UI5 应用路由 url 的可读性
顺序表(C语言实现)
rxjs Observable filter Operator 的实现原理介绍
编程内功之编程语言众多的原因
阿南的疑惑
35道MySQL面试必问题图解,这样也太好理解了吧
In the promotion season, how to reduce the preparation time of defense materials by 50% and adjust the mentality (personal experience summary)
Resolved (error in viewing data information in machine learning) attributeerror: target_ names
Ubuntu 14.04 下开启PHP错误提示
Servlet
TensorBoard可视化处理案例简析
[how to solve FAT32 when the computer is inserted into the U disk or the memory card display cannot be formatted]