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

},

)

Flutter源码

/*

  • Copyright © 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 {

@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: [

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插件生成的flutter工程,直接转换为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源码

这个界面源码过于复杂,就不贴了。代码地址在:samples/adobe_xd/lib/Home.dart

Best UI template转换


这个就厉害了,一个UI相等精美的flutter工程,各种动效,界面设计完全是工业级的。当然他使用的属性也特别多,所以转换起来还是有点麻烦的,我们选择性转换了大部分页面。 建议大家也去看前面提到的视频。其中带Fair黄色角标的都是动态组件,有的使用在滑动列表中,作为一个卡片,有的作为全屏页面。

相关源码位于:samples/best_flutter_ui_templates/lib

使用Fair会不会掉帧?


帧率经常被用来评估App的顺滑程度。flutter的UI性能优化可以参考此文。

flutter.dev/docs/perf/r…

开启悬浮层可以看到栅格化线程和UI线程的帧率,Y轴方向每条分割线是16ms一档,如果超出最低档,基本可能会出现卡顿Jank。

这个demo是官方的hello,UI,State都有了,在点击加号的时候,Fair内部也是做得局部刷新,不会导致整个页面重加载。

不过这个界面确实有点简单,也说明不了太多问题。需要指出的是Fair并没有替换Flutter的渲染方式,所以如果转换前的代码有卡顿问题,那么转换后也会有问题,UI优化可以从转义源码前入手,目前不需要去优化Fair写法。

针对Fair的性能,将进一步优化,确保不会为接入app新增隐患。

原生计数器Fair计数器

还有。。。


还想知道更多?请移步至文档平台:http://fair.58.com/

在上手之后再结合源码,效果更佳。

最后

在这里我也分享一份由几位大佬一起收录整理的 Flutter进阶资料以及Android学习PDF+架构视频+面试文档+源码笔记 ,并且还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料……

这些都是我闲暇时还会反复翻阅的精品资料。可以有效的帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。

如果你有需要的话,可以前往 GitHub 自行查阅。

文末

初级工程师拿到需求会直接开始做,然后做着做着发现有问题了,要么技术实现不了,要么逻辑有问题。

而高级工程师拿到需求会考虑很多,技术的可行性?对现有业务有没有帮助?对现有技术架构的影响?扩展性如何?等等…之后才会再进行设计编码阶段。

而现在随着跨平台开发,混合式开发,前端开发之类的热门,Android开发者需要学习和掌握的技术也在不断的增加。

通过和一些行业里的朋友交流讨论,以及参考现在大厂面试的要求。我们花了差不多一个月时间整理出了这份Android高级工程师需要掌握的所有知识体系。你可以看下掌握了多少。

混合式开发,微信小程序。都是得学会并且熟练的

这些是Android相关技术的内核,还有Java进阶

高级进阶必备的一些技术。像移动开发架构项目实战等

Android前沿技术;包括了组件化,热升级和热修复,以及各种架构跟框架的详细技术体系

以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。

而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?

就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?

我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。

喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢!

]

以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。

而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?

就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?

我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。

喜欢的话请帮忙转发点赞一下能让更多有需要的人看到吧。谢谢!

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值