flutter是什么
flutter是Google开源的UI工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。由于flutter开源、免费,拥有宽松的开源协议,所以适合应用于商业项目。
一、什么是 flutter
flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 flutter可以与现有的代码一起工作。在全世界,flutter正在被越来越多的开发者和组织使用,并且flutter是完全免费、开源的。
从官方的介绍来看可以总结成三点:
跨平台:现在flutter至少可以跨 4 种平台,甚至支持嵌入式开发。我们常用的有Linux、Android、IOS,甚至可以在谷歌最新的操作系统上Fuchsia进行运行,经过第三方扩展,甚至可以跑在MacOS和Windows上,到目前为止,flutter算是支持平台非常多的框架了,良好的跨平台性,直接带来的好处就是减少开发成本。
原生用户界面: 它是原生的,让我们的体验更好,性能更好。用官方的话讲就是平滑而自然的滑动效果和平台感知,为您的用户带来全新的体验。
开源免费:同Android系统一样,这些都是免费开源的。
二、flutter 的特点
1.快速开发
毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的widget在几分钟内构建原生界面。
2.富有表现力和灵活的UI
使用flutter内置美丽的Material Design和Cupertino的widget、丰富的motion API、平滑而自然的滑动效果和平台感知,为您的用户带来全新体验。
3.响应式框架
使用Flutter的响应式框架和一系列基础widget,可以轻松构建您的用户界面。使用功能强大且灵活的API(针对2D、动画、手势、效果等)可以帮助开发者解决艰难的UI挑战。
4.访问本地功能和SDK并支持插件
flutter可以复用Java、Swift或ObjC代码,访问Android和iOS上的原生系统功能。另外通过flutter插件也可以访问原生系统功能,比如蓝牙、相机、WiFi等等。
5.跨平台自绘引擎
flutter与Hybrid App、React Native这些跨平台技术不同,flutter既没有使用WebView,也没有使用各个平台的原生控件,而是本身实现一个统一接口的渲染引擎来绘制UI,这样做可以保证不同平台UI的一致性。另外采用自绘引擎后,Flutter在布局过程中不需要像RN那样要在JavaScript和Native之间通信,可以节省性能开销。flutter使用Skia作为其2D渲染引擎,Skia是Google的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia是跨平台的,并提供了非常友好的API。
三、主流跨平台框架对比
ReactNative 和 Weex:执行效率是硬伤,首页不能用RN已是共识,而且目前在同一Android和iOS代码方面尚存在不足。
PWA:用纯Web的方式统一三端,很好的idea。但是需要借助Google play Service和浏览器支持,国外大部分Android手机和iOS的新版本都可以支持PWA,但遗憾的是,国内的浏览器很难统一支持PWA,这还需要时间。
微信小程序:属于微信内的生态闭环,更适合工具类和小游戏,一般都作为原生APP的延伸入口。
flutter:在渲染技术上,flutter选择了自己实现GDI,由于有更好的可控性,使用了新的语言Dart,避免了RN的那种通过桥接器与Javascript通讯导致效率低下的问题,所以在性能方面比RN更高一筹;有经验的开发者可以打开Android手机开发者选项里面的显示边界布局,发现flutter的布局是一个整体。说明flutter的渲染没用使用原生控件进行渲染。