Flutter系列(一)——详细介绍

什么是Flutter

Flutter 是谷歌推出的开发移动UI框架,能够快速的在IOSAndroid上构建高质量的原生用户界面。java

Flutter能够与现有的代码一块儿工做,而且Flutter是彻底免费的,开源的。react

总结来讲:小程序

Flutter是一款移动应用程序SDK,包含框架、widget和工具,为开发人员提供了一种在Android和iOS上构建和部署精美移动应用程序的简单高效的方式。微信小程序

Flutter的优点

快速开发

毫秒级的热重载,修改后,您的应用界面会当即更新。使用丰富的、彻底可定制的widget在几分钟内构建原生界面。浏览器

富有表现力和灵活的UI

快速发布聚焦于原生体验的功能。分层的架构容许您彻底自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计。微信

原生性能

Flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些均可以在iOS和Android上达到原生应用同样的性能。weex

Flutter的开发语言

Flutter采用的是Dart做为开发框架和widget的语言。架构

为何选择Dart语言?

Flutter在四个主要维度进行了评估,并考虑了框架做者、开发人员和最终用户的需求等因素。咱们发现不一样的语言在不一样的层面符合一部分需求,但Dart在全部评估维度上得分都很高,而且符合咱们的全部要求和标准。框架

Dart运行时和编译器支持Flutter的两个关键特性的组合:dom

基于JIT的快速开发周期:容许使用类型的语言进行形状更改和有状态的热重载;

以及AOT编译器,可生成高效的ARM代码,能够快速启动并拥有可预测的生产部署性能。

此外,咱们有机会与Dart社区密切合做**,Dart社区正在积极投入资源改进DartFlutter中的使用。例如,当咱们采用Dart时,该语言没有提供生成原生二进制文件的工具链(这对于实现可预测的高性能是颇有帮助的),可是如今实现了,由于Dart团队为Flutter构建了它。一样,DartVM以前已经针对吞吐量进行了优化,但团队如今正在优化VM的延迟时间,这对于Flutter**的工做负载更为重要。

Dart在如下主要标准上获得高分:

开发人员的效率 Flutter的主要价值主张之一是经过让开发人员使用相同的代码库为iOSAndroid建立应用程序,从而节省了工程资源。使用高效的语言能够进一步加速开发周期,并使Flutter更具吸引力。这对咱们的framework团队和开发人员都很是重要。大部分Flutter功能都是用Dart实现,所以咱们须要在10万行代码时能保持高效的而不会牺牲frameworkwidget的可读性。

面向对象虽然咱们可使用非面向对象的语言,但这意味着要从新解决几个难题。另外,绝大多数开发人员都具备面向对象开发的经验,所以更容易学习如何使用Flutter进行开发。

可预测,高性。借助Flutter,咱们但愿使开发人员可以快速建立流畅的用户体验。为了实现这一点,咱们须要可以在每一个动画帧中运行大量的代码。这意味着咱们须要一种既能提供高性能又能提供可预测性能的语言,而不会出现会致使丢帧的周期性暂停。

快速内存分配 Flutter框架使用函数式流,它很大程度上依赖于底层的内存分配器,从而有效地处理小的、短时间的内存分配会很是重要,因此在缺少此功能的语言中Flutter没法有效地工做。

Flutter应用程序性能如何?

Flutter应用程序性能很是出色。Flutter旨在帮助开发人员轻松实现恒定的60fpsFlutter应用程序经过本机编译的代码运行 - 不涉及解释器。这意味着Flutter应用程序能够快速启动并执行。 Flutter开发体验如何?编辑和刷新之间有多长时间? Flutter实现了热重载开发循环。您能够在设备或模拟器上实现亚秒级重载。 Flutter的热重载是有状态的,这意味着应用程序状态在重载后仍然会保留。因此您能够在应用程序中各个页面快速迭代开发,而无需在每次从新加载后都要从主屏幕从新开始。

Flutter的优点

综上所述,总结来讲,Flutter的优点有以下几个方面

性能强大,流畅 Flutter对比weexreact native相比,性能的强大是有目共睹的。基于dom树渲染原生组件,很难与直接在原生视图上绘图比肩性能,Google做为一个轮子大厂,直接在两个平台上重写了各自的UIKit,对接到平台底层,减小UI层的多层转换,UI性能能够比肩原生,这个优点在滑动和播放动画时尤其明显。

路由设计优秀 Flutter的路由传值很是方便,push一个路由,会返回一个Future对象(也就是Promise对象),使用await或者.then就能够在目标路由pop,回到当前页面时收到返回值。这个反向传值的设计基本是甩了微信小程序一条街了。弹出dialog等一些操做也是使用的路由方法,几乎不用担忧出现传值困难

单例模式 Flutter支持单例模式,单例模式的实现也很是简单。单例模式很好的解决了一些问题。相比之下,js的单例则并非一个真正的单例,或者说不是一个简单的单例,这也是受限于js所运行的环境。单例模式并不老是合理的,容易被滥用。可是在App的初期开发中,每每一个容易实现的单例能够帮助咱们快速完成一些逻辑的搭建。

优秀的动画设计 Flutter的动画简单到难以想象,动画对象会根据屏幕刷新率每秒产生不少个(通常是60个)浮点数,只须要将一个组件属性经过补间(Tween)关联到动画对象上,Flutter会确保在每一帧渲染正确的组件,从而造成连贯的动画。这种十分暴力的操做在Flutter上却看不到明显的卡顿,这也是Flutter的一个魔力所在。相比之下其余跨平台框架几乎不能设计动画……每每会遭遇很是严重的性能问题。

UI跨平台稳定 Google直接在两个平台上在底层重写了UIKit,不依赖于Css等外部解释器,几乎不存在UI表达不理想,渲染不正常的状况,能够得到很是稳定的UI表达效果。Css换个浏览器就有不一样的表现,基于Css的跨平台框架很难得到稳定的UI表现。

可选静态的语言,语言特性优秀 Dart是一个静态语言,这也是相对于js的一个优点。Dart能够被编译成js,可是看起来更像java。静态语言能够避免错误,得到更多的编辑器提示词,极大的增长可维护性。不少js库也已经用ts重写了,Vue3.0的底层也将所有使用ts编写,静态语言的优点不言而喻。

最后

固然,Flutter也有一些不足,还有和React Native的比较我会在下一篇文档当中详细介绍介绍。

Flutter已是Top20的软件库,经过接下来的一系列的文章,但愿我和你们一块儿来学习Flutter,一块儿进步,一块儿有所收获,掌握将来技术主流的主动权!

有什么好的建议,意见,想法欢迎给我留言!

欢迎关注公共号

关注公众号会有更多收获!

动动小手指点赞,收藏,关注一键三连走一波吧!

我的微信

咱们一块儿讨论,进步,提升!

加的人较多,请添加备注

参考

www.jianshu.com/p/c51fc925b…

flutterchina.club/

相关文章
相关标签/搜索