Flutter(移动应用程序开发框架)
是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。也是构建未来的Google Fuchsia 应用的主要方式。
Flutter 概况
Flutter是谷歌的移动UI框架 [4] ,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。它也是构建未来的Google Fuchsia [1] 应用的主要方式。
Flutter组件采用现代响应式框架构建,这是从React中获得的灵感,中心思想是用组件(widget)构建你的UI。 组件描述了在给定其当前配置和状态时他们显示的样子。当组件状态改变,组件会重构它的描述(description),Flutter会对比之前的描述, 以确定底层渲染树从当前状态转换到下一个状态所需要的最小更改。
Flutter特性
快速开发
Flutter的热重载帮助你快捷方便的试验、重构UI、添加特性和修复bug。在仿真器、模拟器和ios、android硬件上体验亚秒级的重载,而不会丢失状态。
绚丽UI
通过Flutter内建的漂亮的质感设计和Cupertino(ios-flavor)小工具、丰富的动画API,平滑的自然滚动和平台感知,让用户感到满意。
响应式
通过Flutter的现代响应式(Reactive)框架和丰富的平台布局和基础组件轻松构建您的用户界面。用强大而灵活的API解决2D、动画、手势、效果等难题。
访问原生功能
通过平台api、第三方sdk和原生代码使您的应用变得生动起来。Flutter让您可以重用您现有的java、swift和Objc代码,并在iOS和Android上访问原生特性和SDK。
框架结构
Flutter的主要结构包括:
Flutter engine
Foundation library
Design-specific widgets
相对优势
为什么选用Dart语言?
相信很多人都对Flutter选用了Dart语言感到疑惑不解,甚至有人都还不知道Dart语言。“为什么Flutter会选用Dart?”知乎网友马超曾当面向Flutter 的开发专家 Divod进行了求证,Divod表示“因为 Dart 的开发团队就在旁边,他们能给到我们很快的支持,双方沟通也会很顺利。”
和其它响应式视图的系统一样,Flutter在刷新视图树时会创建很多只在一帧内存在的对象,而Dart “generational garbage collection” 则对于对象消耗资源相对较少的系统非常有效。而且使用单个个pointer bump来完成对象的分配,有助于避免UI卡顿。
不过,Dart也有一个很大的缺陷,那就是可读性不好。多位网友吐槽Dart括号太多、嵌套复杂,无论是从逻辑上还是可读性上相比都与React Native有差距。也有网友表示Dart写法属于底层写法,等到社区发展壮大,加颗语法糖也是分分钟的事情。
跨平台
提到跨平台,很多人都会自然而然的联想到一个名字“React Native”,程序员可以利用JavaScript和React获得一致的开发体验,但是RN在实际平台上还需要适配和桥接差异性。
而Flutter则是依靠Flutter Engine虚拟机在iOS和Android上运行,开发人员可以通过Flutter框架和API在内部进行交互。Flutter Engine使用C/C++编写,具有低延迟输入和高帧速率的特点。除此之外,Flutter提供了自己的小部件集合,可以直接在OS平台提供的画布上描绘控件。
有网友称:RN是将一种设计理念延伸到两个平台,而Flutter则实现了一套代码,部署多个平台。
性能和体验
Flutter中UI组件和渲染器都从平台中集成到用户的应用程序中,所以原来虚拟的控件树是真实的控件树,所以渲染和绘制的速度会很快,动画发生在用户空间中,开发人员也可以对其进行很多的控制。有网友在亲测了Flutter后表示:在页面渲染方面,Flutter比RN各具优势,图片量越大,Flutter的流畅度优势越大。
除此之外,在以下方面Flutter也有优势:
· 响应式视图,不需要JavaScript的桥接器
· 性能更好,兼容性更好
· 代码将AOT编译为本机(ARM)代码
· 美观,可定制的UI组件,开发人员完全控制UI组件和布局
· 强大的开发者工具,惊人的热重新加载
附上中文文档:https://flutterchina.club/